Windows DB

tempdb 복구 및 이동 방법

2008.05.15 02:39

hostway 조회 수:22791

■ 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