본문 바로가기

IT기반지식/데이터베이스

MSSQL Temp 또는 Model db등 시스템 DB 오류로 SQL서버가 시작되지 못할 때


1. 개요
  서버 이전 도중에 DAS와 연결되어 있던 DB서버가 이전/부팅 과정의 실수 등으로 인하여 다시 DAS가 붙는 과정에서 HDD등의 오류로 인하여 OS에 의해서 자동 FIX 되는 경우 MSSQL서버가 시작되지 않는 경우가 있을 수 있다.
또는 라이브상태의 DB서버에 붙어 있는 DAS의 전원을 먼저 꺼버렸을 경우에 관련 DB 파일들이 손상되는 경우가 발생 할 수 있다.

  이번 서버 이전 과정에서 어쨌거나 DAS를 다시 인식시키는 과정에서 데이터베이스 파일에 손상이 있었고, 일반 데이터베이스 파일은 물론이고 시스템 데이터베이스 파일이 손상된 경우가 발생했다. 
 이때 일반 사용자 데이터베이스가 손상되었을 경우에 SQL서버는 시작 되나 해당 데이터베이스명에 (주의대상)으로 표시 되고 동작하지 않는다. 이 부분은 해당 DB를 오프라인 시키거나 삭제후 백업했던 데이터베이스를 복원하면 된다.

 시스템 데이터베이스가 손상 되었을 경우는 아래와 같이 cmd 창에서
   sqlservr -c -f -T3608 -T4022
를 실행하여 싱글모드로 진입한다
이때 tempdb 또는 modeldb가 손상되어 처리될 수 없다는 메시지가 나타나게 되는데
이 상태에서 쿼리분석기 또는 SQL Studio Manager를 실행할 수 있는데 매니저 실행후 쿼리분석기를 또 실행하면 싱글 모드이기 때문에 열리지 않는다.
tempdb 가 손상되었을 경우에는 싱글 모드 상태에서 쿼리 분석기만을 오픈한 상태에서 아래 참조한 4, 5번 항목으로 해결이 가능한데 이 쿼리를 날렸을 경우에 cmd prompt에 실행된 싱글모드가 종료된다면 tempdb의 문제가 아니니 메시지를 잘 확인 할것, 이번 경우는 modeldb에 문제가 있다는 메시지 확인후 modeldb를 제거후 백업했던 modeldb를 복원하여 정상화 시킴
modeldb는 템플릿화해서 작업을 쉽게하기 위한 정보가 있는 것이기 때문에 최초 설정된 정보로 복원해도 상관은 없을 것임.

어쨌거나 아래 참조 해결책으로 이런저런 고생 끝에 정상 복구 했슴
반드시 서버 이전 전에 또는 주기적으로 백업을 생활화 합시다... 명줄 단축시키지 않으려면 ^^


2. 참고 정보[http://dbrang.tistory.com/220]

[2k5] tempdb 오류로 SQL Server 시작(Start) 되지 않을

SQL Server/BRW 2008/09/08 13:44 posted by 디비랑

<_comment_*********************************************************************************************
-- Title : [2k5] tempdb 오류로 SQL Server가 시작(Start) 되지 않을 때

-- Reference : dBRang.com
-- Key word : sql start, cmd,
서버 시작
<_comment_<_comment_
--
사례 : Tempdb Suspection 발생
--          Tempdb
파일 경로 변경시 잘못 된 경로나 파일명 지정(실사례)
--         
또는 명령문 오류(, filename = 'c:/Databases/Tempdb/'처럼 파일명 안 쓴 경우
)<_comment_

-- 1.
오류 발생

alter database tempdb  -- tempdb
데이터 파일 변경
modify file ( name = tempdev
            , filename = 'd:\tempdb.mdf'
            , size = 70MB
            );

alter database tempdb -- tempdb
로그 파일 변경
modify file ( name = templog
            , filename = 'd:\tempdb.mdf' --
데이터 파일명과 동일하게 설정(시작시 에러 발생)
            , size = 10MB
            );

-- 2. SQL Server Restart<_comment_
이벤트 뷰어에서 로그 확인


SQL Server (MSSQLSERVER)
서비스가 특정 오류 1814(0x716) 때문에 종료되었습니다.<_comment_

-- 3. CMD
에서 Single User Mode로 시작

<_comment_
##
다음 명령으로 Single Mode 오픈(명명된 인스턴스인 경우 -s 파라미터 지정)
> c:\Program Files\Microsoft SQL Server\MSSQL. 1\MSSQL\Binn\sqlservr -c -f -T3608 -T4022<_comment_

-- 4. (3.
번의) 창을 열어둔 상태로 QA SSMS 실행

-- QA
SSMS 실행시 Single Mode로 접속이 안된다는 메세지 출력시 다른 서버, SSAS, SSIS,
--
다른 인스턴스등을 모두 서비스 중지한다
.
alter database tempdb -- tempdb
로그 파일 변경

modify file ( name = templog
            , filename = 'd:\tempdb.log' --
제대로 변경
            , size = 10MB
            );

-- 5. CMD
창에서 Ctrl + c를 누르고 프롬프트 창에서 'y'를 눌러준다.

-- 6. SQL Server Restart

-- 7.
정상 확인

<_comment_
   ## tempdb suspect
의 경우 다음 쿼리로 status 리셋
   UPDATE master..sysdatabases SET status = status ^ 256
   WHERE name = 'tempdb';

  
또는

   sp_sp_resetstatus 'tempdb';<_comment_