SQL Server/SQL Server Tip

Tempdb 에러

SungWookKang 2015. 7. 17. 09:39
반응형

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

 

반응형