본문 바로가기

운영/데이터베이스

TEMP DB 경로 변경 후 서비스 재시작이 안될때

728x90

TEMPDB의 경로가 C드라이브에 있는경우 TEMP 사용이 많아지면, MS SQL 서비스가 OS의 서비스에까지 영향을 주게 된다.

 

그래서 종종 C드라이브에 있는 TEMP를 D 또는 다른 드라이브로 옮기고자 한다.

TEMPDB의 경로를 수정하려면, TEMPDB의 경로를 ALTER DATABASE 구문으로 수정을 하고 서비스를 재시작한다.

 

그런데, 서비스가 올라오지 않고, 아래와 같은 에러 메세지가 발생한다.

 

"Could not create tempdb. You may not have enough disk space available. Free additional disk space by deleting other files on the tempdb drive and then restart SQL Server. Check for additional errors in the event log that may indicate why the tempdb files could not be initialized". 

 

내용을 보면, TEMP DB를 생성하지 못하였다. 그 이유는 드라이브의 공간이 부족하다. 

 

1. TEMP DB 초기화 및 SINGLE 모드로 시작 

: 서비스가 시작되지 않기 때문에 ALTER DATABASE를 할 수 없는 상태이다.

그래서 서비스를 시작할때 부터 TEMP의 경로를 초기화 하고 SINGLE MODE로 서비스를 시작한다. (sqlservr -c -f) 

 

- 주의

: sqlservr 을 실행할때, cmd 창은 반드시 administrator 권한으로 실행해야 한다.

그렇지 않으면, LogFile을 오픈하지 못한다는 에러가 발생하며 서비스가 시작 되지 않는다. 

 

2. 서비스에 접속 

- 주의 

: 이때 주의해야 할 점은 single mode로 서비스를 올렸기 때문에 session이 1개 밖에 허용이 안된다는 것이다.

 

평소에는 서버에 접속하고 새 쿼리창을 실행하는데, 해당 작업을 할때는 그렇게 해서는 안된다. 다른 session을 오픈하지 말고 새로운 쿼리창을 눌러 1세션만 접속한다.

 

 

 

3. TEMP DB 경로 수정

: ALTER DATABASE 구문으로 TEMPDB의 경로는 재 수정한다.

ALTER DATABASE tempdb
MODIFY FILE(NAME=tempdev,FILENAME='H:\TEMP\tempdb.mdf')
ALTER DATABASE tempdb
MODIFY FILE(NAME=templog,FILENAME='H:\TEMP\tempdb.ldf')

4. 서비스를 재시작 한다. 

※ TEMP DB의 경로를 수정해야 할때는 항상 아래 사항을 유의해야 한다. 

1. 서비스를 재시작해야 한다. 

2. TEMP DB를 옮길 드라이브에 공간이 충분해야 한다.

728x90