2008.07.07 18:51
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를 수행하여, 시스템 임의 업데이트를 할 수 없도록 한다.
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
10 | [MSSQL] 다른 테이블로 데이터 INSERT | 호스트웨이 | 2015.09.16 | 8981 |
9 | MSSQL Express Backup 자동화 | 호스트웨이 | 2015.05.06 | 8872 |
8 | DB 소유권 이전 | 호스트웨이 | 2012.06.01 | 8860 |
7 | [MSSQL]인덱스 (INDEX) 사용하기 | 호스트웨이 | 2015.09.16 | 8746 |
6 | mssql-table backup(테이블 백업/복원) | 호스트웨이 | 2015.09.09 | 8729 |
5 | DB 마이그레이션 방법 | 호스트웨이 | 2012.04.27 | 7422 |
4 | [MS SQL]트랜잭션 사용 | 호스트웨이 | 2015.09.15 | 7416 |
3 | MS-SQL 서버 메모리 사용량 제한 | 호스트웨이 | 2012.12.14 | 7288 |
2 | Windows Server2008 에서 MSSQL2005 Reporting Service 설치하기 | 호스트웨이 | 2012.03.09 | 6532 |
1 | DBConnectionOpen오류 | 호스트웨이 | 2012.07.14 | 6368 |