Windows DB

MDF만 복구하는 방법(MSSQL2000만해당, MSSQL2005는 스스로 자동으로 생성됨)
- Written by sapjiL

상황:
LDF가 삭제된 DB이름: test001
 - test001.mdf 만 남아있다.

1. net stop mssqlserver 를 수행

2. move test001.mdf test001.mdf_old 와 같이 test001의 MDF파일의 이름을 바꾼다.

3. net start mssqlserver 수행

4. EM(엔터프라이즈 매니저)에서 보면, test001이 주의대상으로 표시가 된다.

5. 과감하게 test001삭제(2번항목에서 test001.mdf_old로 바꿨으므로 실제 파일은 삭제 안됨)

6. create databse test001로 DB를 생성한다.

7. net stop mssqlserver 수행

8. 6번항목에서 새로만든 test001의 로그파일인 test001_log.ldf을 삭제한다.

9. 2번항목에서 이름을 바꿨던 것을, move test001.mdf_old test001.mdf로 원래대로 해놓는다.

10. net start mssqlserver

11. 데이터베이스가 주의모드로 되어있을 것이다.

12. sp_configure 'allow updates', 1  을 수행하여 시스템 테이블을 수정할 수 있게 한다.

13. reconfigure with override 을 수행하여 allow updates가 바로 반영되도록 한다.

14. UPDATE SYSDATABASES SET STATUS=STATUS|32768 WHERE NAME ='test001'
     - NAME에 DB명 집어넣는다. master DB의 sysdatabses에서 해당 DB 모드를 응급모드로 바꾸는 것이다. 그래야 로그를 재생성 가능함.

15. DBCC REBUILD_LOG('test001', 'C:Program FilesMicrosoft SQL ServerMSSQLDatatest001_log.ldf')
     - DB명과 DB로그파일경로 및 로그파일명을 적절히 DB명에 맞게 수정하여 준다.

16. UPDATE SYSDATABASES SET STATUS=24 WHERE NAME ='test001'
     - 응급모드에서 정상 모드로 바꾼다.

17. sp_configure 'allow updates', 0  및  reconfigure with override를 수행하여, 시스템 임의 업데이트를 할 수 없도록 한다.