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

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

-- 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
/*
이벤트 뷰어에서 로그 확인

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

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

-- 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. 정상 확인
/*
   ## tempdb suspect의 경우 다음 쿼리로 status 리셋
   UPDATE master..sysdatabases SET status = status ^ 256
   WHERE name = 'tempdb';

   또는

   sp_sp_resetstatus 'tempdb';
*/
반응형

+ Recent posts