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 | SQL 인젝션에 이용되는 XP_cmdshell 확장프로시져 삭제 방법 | dhkim | 2008.12.24 | 18514 |
9 | SQL 인젝션 치료용 커서 | dhkim | 2008.12.10 | 15078 |
8 | MS-SQL 개체 소유권 변경 | 레이쩡 | 2008.09.18 | 24883 |
7 | MS SQL 트랜잭션 로그를 줄이는 방법 | 레이쩡 | 2008.09.18 | 21236 |
6 | Microsoft Source Code Analyzer for SQL Injection 관련 자료 | dhkim | 2008.07.25 | 21540 |
» | MDF파일만 있을 경우 복구하는 방법(SQL2000만 해당) | shpark | 2008.07.07 | 24686 |
4 | SQL Server 인덱스 설정의 효과 | dhkim | 2008.06.27 | 23597 |
3 | tempdb 복구 및 이동 방법 | hostway | 2008.05.15 | 22794 |
2 | 실행중인 Mssql 버젼 확인 | hostway | 2008.05.15 | 25317 |
1 | sql injection 보안 점검 | hostway | 2008.05.14 | 21727 |