2009-04-23 2 views
1

그래서 이상한 행동을하는 데이터베이스가 있습니다. 나는 서버에서 모든 활동을 지켜보고 있으며 tempdb는 계속 증가하고 있습니다. 약 45 분 만에 30GB가 증가했습니다. 나는 tempdb에서 할당 된 공간을 계속 확인하며, 항상 약 8MB이다. 할당하는 모든 공간이 필요하지 않다는 것을 알고 있습니다. tempdb가 실제로 비어있는 상태에서 1 건의 트랜잭션이 발생하는 것을 지켜 보았습니다. 이전에 할당 된 공간을 사용하는 대신 엔진이 대신에 더 많은 하드 드라이브 공간을 사용하는 것으로 나타났습니다. tempdb가 매우 큰 크기 였음을 확인하고 SQL을 재시작하여 tempdb를 적당한 크기로 만들었지 만 그 이후로는 계속 증가하고 있으며 SQL을 지속적으로 다시 시작하는 것은 프로덕션 환경이므로 옵션이 아닙니다. 나는 적당한 크기로 tempdb를 유지할 필요가 있기 때문에이 서버에서 hd 공간을 제한했다.MSSQL Server 2005 tempdb 문제

+0

이렇게 해결 되었습니까? – Wayne

답변

2

실행중인 스크립트에 대한 분석을 수행 했습니까? SQL 활동을 결정하기 위해 프로파일 러를 사용 했습니까?

첫 번째 생각은 임시 테이블 (#table)을 사용하는 스크립트이고 가능한 데카르트 제품이 참여합니까?

참고로 tempdb는 SQL Server를 시작할 때 다시 만들어 지므로 서비스를 다시 시작할 때 왜 잘리는지 설명합니다.

+0

내가 제어 할 수있는 데이터베이스 중 임시 테이블을 사용하는 데이터베이스가 없습니다. 내가 아는 유일한 데카르트 조인은 일주일에 한 번 실행됩니다. 지금 어떤 일이 일어나고 있는지 알아 내려고 프로파일 러를 실행 중입니다. 시작시 tempdb가 잘리는 것을 알고있었습니다. 우리는 하드 드라이브 공간이 없어서 특별히 다시 시작했습니다. –

+0

좋아, 프로필이 완료 될 때까지 기다려보고 어쩌면 그 일이 벌어지고 있는지에 대한 통찰력을 얻을 수있을 것입니다. DMV를 실행 했습니까? – Wayne

+1

조인, 정렬 (순서 지정) 및 특정 dbcc 명령은 결과 집합을 만들기 위해 저장소에 대해 tempdb를 사용합니다. 프로파일 출력에서도이 값을 찾으십시오. – Wayne