본문 바로가기

Server Story..../MSSQL

2008 에서 mdf 만으로 복구하고자 할때.


mssql 서버 사용시.   ldf  파일 을 분실 혹은 사용하지 못할경우, 


2005 2008 에서 복원 방법. 


-- 기존 데이터 베이스에서 mdf 파일을 다른곳을 보관, 

-- 기존 데이터 베이스 삭제.  

-- 기존 데이터 베이스와 동일한 이름으로 데이터 베이스 생성, 


-- 해당 데이터 베이스 긴급장애 모드로 변경 한뒤 싱글 모드로 변경, 


ALTER DATABASE recovery_test_2 SET EMERGENCY;
ALTER DATABASE recovery_test_2 SET SINGLE_USER;


새로 생성된 mdf 파일과 ldf 파일삭제후  동일한 위치에 기존 백업해둔 mdf 파일을 복사.

** 이때 sql 서비스를 정지해야 할필요도 있다. 


-- 다시 sql 을 올려보면,  문제가 있고 테이블도 안되고 그럴것이다. 

-- ldf 파일이 없으므로,  해당 파일을 다시 재 생성해준다. 

alter database test rebuild LOG ON (name=test_log,filename='C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\test_log.ldf')


-- 위의 작업이 정상적으로 되면,  에러 메시지가 발생하게 되는데.  

이는  해당ldf 와 mdf 가 동일한 싱크가 아니기 때문이다. 


-- 아래 명령어를 통해서  해당 데이터 베이스를 체크 한다. 

  이때 에러메시지 발생시 해당 메시지 대로 별도로 진행 한다. 

use test 

dbcc checkdb



-- 에러가 발생 하지 않으면 아래 메시지대로 multi_user 로 변경 한다. 

alter database test set SINGLE_USER WITH ROLLBACK IMMEDIATE

alter database test set multi_user with rollback immediate


-- 그뒤 복구 모드를  원상 복구 시켜준다.  

ALTER DATABASE [test] SET RECOVERY FULL WITH NO_WAIT



최종적으로 다시 한번 확인. 

sp_helpdb test