Tempdb 에러
- Tempdb 디바이스가 사라 졌거나?
- 여유 디스크의 공간이 tempdb 보다 작거나?
- 설정된 Tempdb 경로가 틀리거나?
할 때 SQL Server가 정상적으로 시작이 되지 않는다. (위 상황 외에 매우 많은 여러 가지 상황이 들이 존재 한다.)
이럴 때 어떻게 해야 할까?
디스크가 부족한 상황을 만들기 위하여 USB 메모리를 이용하여 매우 적은 공간만 남겨 두도록 한다.
현재의 TEMPDB의 파일 위치 및 디스크 크기등 정보를 확인 한다.
현재 C 드라이브에 위치해 있으며 21 메가를 사용 한다.
SP_HELPDB TEMPDB GO |
다음 명령문을 이용하여 TEMPDB의 파일 위치를 변경 하자. 경로를 변경하고 SP_HELPDB 명령문을 사용하여 확인해 보면 경로는 변경되어 있지만 실제로 적용은 되지 않는 상태이니 반드시 서비스 재시작을 해야 한다.
ALTER DATABASE TEMPDB MODIFY FILE (NAME = TEMPDEV, FILENAME = 'G:\TEMPDB.MDF') GO
ALTER DATABASE TEMPDB MODIFY FILE (NAME = TEMPLOG, FILENAME = 'G:\TEMPLOG.LDF') GO
SP_HELPDB TEMPDB GO |
서비스를 재시작 하여 보자.
현재 Tempdb의 드라이브는 USB메모리(G드라이브)로 지정되어 있으며 여유 디스크 공간은 약 8메가 이다. 하지만 tempdb의 시작 필요 크기는 20메가. 어떻게 될까?
다음과 같이 에러 문구와 함께 서비스가 시작 되지 않는다.
- SSMS 화면
- 커맨드 화면
USB 메모리 드라이버를 확인해 보면 TEMPDB의 MDF가 생성되었으나 0 바이트로 정상적으로 생성되지 않음을 확인 하였다.
이때 해결 방법은 시작 매겨변수를 통하여 최소 구성으로 시작 한다.
시작 옵션 관련 링크 : http://msdn.microsoft.com/ko-kr/library/ms190737(v=sql.100).aspx
옵션 : -f
SQL Server 구성관리자에서 시작 매개 변수에 –f 를 사용하여 서비스를 시작 하면 최소 구성으로 SQL Server가 시작되며 Tempdb가 2메가로 기본 폴더에 새로 생성된다.
또 다른 방법은 커맨드 창에서 아래 경로로 가서 시작 명령에 –f 의 옵션을 추가하여 실행 합니다. 본 실습인 SQL Server 2008R2에서 진행되었다.
(버전에 따른 경로가 다르므로 주의)
경로 : PROGRAM FILES\MICROSOFT SQL SERVER\MSSQL10_50.MSSQLSERVER\MSSQL\BINN 명령어 : SQLSERVR.EXE -F |
이렇게 최소 구성으로 SQL Server를 시작하고 나면 Single User로 동작 하기 때문에 여러 세션이 접근할 수 없다.
이 때에는 SSMS실행 시 서버 연결을 하지 말고 [새 쿼리창]을 클릭하여 로그인을 한다.
그리고 서비스에 필요한 설정을 변경하고 SQL Server를 재 시작 한다.
SP_HELPDB를 이용하여 TEMPDB의 위치를 확인해 보면 기본 폴더에 2M의 크기로 tempdb가 생성된 것을 확인 할 수 있다.
Tempdb의 성능과 관련된 부분은 다음 아티클을 참고한다.
관련 링크 : http://sqlmvp.kr/140164023333
2012-08-27 / 강성욱 / http://sqlmvp.kr
'SQL Server > SQL Server Tip' 카테고리의 다른 글
SSMS 명령 단축키 설정 (0) | 2015.07.17 |
---|---|
Min / Max Server Memory 설정 (0) | 2015.07.17 |
SQL Server ErrorLog에 백업 로그 남지기 않기 (0) | 2015.07.17 |
SQL Server의 Errorlog는 어디에 저장 될까? (0) | 2015.07.17 |
통계(Statistics) (0) | 2015.07.17 |