본문 바로가기

데이터베이스/MSSQL

MSSQL 2012 ldf 파일 Rebuild 방법(펌)

원작자 분 감사합니다.! 아주 유용한 내용임!

원본 주소 : http://tshooter.tistory.com/24


내용 : SQL Server 2012 버전부터는 DBCC REBUILD_LOG문을 지원 안한다함.

해당 내용에 대한 내용을 조치하는 방법


[환경]

SQL Server 2012 x64 Enterprise Edition


[장애발생 시나리오]


해당 데이터메이스 (baboldfDB)에 트랜잭션을 발생시킴



SQL Server Service를 중지 시킴.



확인 창이 뜨믄 "예" 누르고 끔.


해당 데이터베이스의 로그를 삭제 혹은 이동시킴



서비스를 다시 시작 시킴


다시 시작도 "예" 하고.


ldf파일 손상으로 해당 데이터베이스가 복구 보류중(Recovery Pending) 상태로 변환 됨.



Error Log를 통해, Activation failure 임을 확인 할 수 있다.



[Action]

다음 문장을 하나씩 차례대로 실행.


--데이터베이스를 응급 복구 모드로 변경합니다.

ALTER DATABASE baboldfDB SET EMERGENCY;

GO


--데이터베이스의 '액세스 제한'을 싱글 유저 모드로 변경

ALTER DATABASE baboldfDB SET SINGLE_USER;

GO


--CHECKDB를 통하여, DB를 검사하고, 보고된 오류를 복구함.

DBCC CHECKDB('baboldfDB', REPAIR_ALLOW_DATA_LOSS) WITH ALL_ERRORMSGS;


--데이터베이스의 '엑세스 제한'을 멀티 유저 모드로 변경

ALTER DATABASE baboldfDB SET MULTI_USER;

GO




복구된 데이터베이스를 확인해보면, 복구 모델이 단순으로 변경되어 있음. 운영환경에 맞게 설정을 변경 해줘야 함.



[추가설명] SQL Server 2012 버전 부터는 DBCC REBUILDLOG 문을 별도로 지원하지 않음. 이경우 위와 같은 방법으로 LDF파일을 

Rebuild 할 수 있다 함.


원작자 분께서 참고하신 싸이트

http://msdn.microsoft.com/ko-kr/library/ms176064(v=sql.105).aspx

'데이터베이스 > MSSQL' 카테고리의 다른 글

주석 추가 및 조회  (0) 2018.11.02
mssql 로그삭제하기  (0) 2015.06.19
MSSQL 로그 삭제(2012지원)  (0) 2014.01.27
CPU 부하 쿼리 찾아내기  (0) 2013.11.20
테이블 및 데이터베이스 정렬 변경  (0) 2013.07.30