■ tempdb 복구
1) tempdb는 SQL Server에서 정렬, GROUP BY를 사용한 집계, 커서 사용, 임시테이블 및 테이블변수 사용,
일부 JOIN, SORT_IN_TEMPDB 옵션을 사용한 인덱스 생성, 데이터베이스의 복구 작업 등에서 사용됩니다.
2) 따라서, 손상 시에는 이와 같은 작업들을 진행할 수 없게됩니다.
3) tempdb의 손상 시 tempdb를 사용하는 작업은 913 오류를 발생하며 정상적으로 실행되지 않습니다.
4) tempdb가 손상되어 주의 대상 상태인 경우 SQL Server 서비스를 재 시작만하더라도 복구되기도 하지만
그렇지 않은 경우도 발생
☞ 이런 경우 다음의 절차를 따라서 tempdb를 재 생성
. 명령 프롬프트를 실행하고 SQL Server 프로그램이 설치된 경로로 이동
. T3608 추적 플래그를 사용하여 응용 프로그램으로 시작합니다.
이때 T4022 추적 플래그도 함께 사용합니다.
C:Program FilesMicrosoft SQL ServerMSSQLBinnsqlservr.exe -c -T3608 -T4022
. 쿼리 분석기에서 sp_resetstatus 프로시저를 사용하여 주의 대상 모드를 해제
exec sp_resetstatus 'tempdb'
. SQL Server를 응용 프로그램으로 시작한 명령 프롬프트 창에서 Ctrl+C 키를 입력한 다음에 Y 키를 눌러
SQL Server를 종료합니다. 다시 SQL Server 서비스를 정상적으로 시작
■ tempdb 이동
1) SQL Server 데이터베이스 중 유일하게 tempdb의 경우에는 ALTER DATABASE ~ MODIFY FILE 구문으로
데이터베이스의 파일의 물리적인 경로를 변경이 가능
2) 단, 변경한 다음에 SQL Server 서비스를 다시 시작해야만 변경된 위치에 새로운 tempdb가 생성
. 기존 파일 위치 확인
use tempdb
go
exec sp_helpfile
. ALTER DATABASE 구문으로 파일의 물리적 경로를 변경
alter database tempdb
modify file (name = 'tempdev', filename = 'D:tempdb.mdf')
go
alter database tempdb
modify file (name = 'templog', filename = 'Dtemplog.ldf')
go
. SQL Server 서비스를 다시 시작하고 새로운 위치로 변경되었는지 확인한 다음에 기존의 파일을 삭제
exec sp_helpfile