ldf파일 없이 mdf 파일 만으로 데이터 베이스 복구 방법
페이지 정보
작성자 서방님 댓글 0건 조회 119회 작성일 07-04-01 22:55본문
MDF 파일만으로 복구하는 방법
1.MDF파일의 DB명으로 빈 디비생성
2.DB정지후 생성한디비의 MDF파일과 가지고있는 MDF파일 교체
3.DB시작을 하면 suspect모드(주의상태)로 빠짐 -> 현재 DB에서 표시할 게 없다고 뜰껍니다.
이후부터는 suspect모드에서의 아래 복구방법 참조
이렇게 복구가 된다해도 DB의 자료는 거의 복구가되지만 여러 키값, 인덱스까지 제대로 잡히진 않습니다.
DB관리시 철저히 준비를 하여야 하며 제대로된 백업 및 복구방법을 사용하여야 할것입니다.
이렇게 한번 해 보십시요.
!!! 먼저 MDF 파일은 만일을 위해 백업해두시기를 당부합니다
아래의 방법은 DB가 suspect되었을때의 조치방법입니다만 로그파일이 없는 MDF 파일만 붙일때도 효과적입니다
저도 글을 올리기전 테스트하여 성공하였습니다만 성공을 100% 장담하지는 못합니다.
-- 1. 시스템 카달로그를 수정할 수 있게 해 줍니다
use master
go
sp_configure `allow update`, 1
reconfigure with override
go
-- 2. 해당 DB를 응급모드 (32768 = emergency mode)로 변경합니다
select * from sysdatabases
update sysdatabases set status=32768 where name=`ckmall`
go
select * from sysdatabases
-- 3. SQL Service 중지
-- 4. SQL Service 시작
-- 5. 로그 파일 재생성
use master
go
DBCC rebuild_log(`ckmall`,C:ProgramFilesMicrosoftSQLServerMSSQLDatackmall_log.ldf`)
--해당경로로 지정하셔요.
go
/* 경고: `DBSIZE` 데이터베이스에 대한 로그가 다시 작성되었습니다. 트랜잭션에 일관성이 없습니다.
물리적 일관성을 검사하려면 DBCC CHECKDB를 실행해야 합니다. 데이터베이스 옵션을 원래대로 설정하고 다른 로그 파일을 삭제해야 합니다.
DBCC 실행이 완료되었습니다. DBCC에서 오류 메시지를 출력하면 시스템 관리자에게 문의하십시오.
*/
-- 6. 이 상태까지 진행을 하게 되면 DB의 LDF파일이 초기화되면서 DB는 DBO만 사용상태로 활성화됩니다.
-- 그러면 이제 DB를 보통모드로 바꾸는 작업을 합니다
-- 7. DB의 상태를 먼저 확인합니다
USE master
go
select * from sysdatabases
-- 이때 아까 복구한 DB의 상태가 `2048` : dbo use only 상태로 되어 있을것 입니다
-- 8. 복구한 DB의 모드를 `기본모드 = 0` 으로 복구합니다
USE master
go
update sysdatabases set status=0 where name=`ckmall`
-- 9. EM을 재연결하면 DB의 상태가 보통으로 변경됨을 확인 할 수 있습니다
-- 10. 이제 DB를 다시 먼저 시스템 카다로그를 수정 할 수 없게 변경해 줍니다
USE master
go
sp_configure `allow update`,0
reconfigure with override
go
/* ===========================
DBCC CheckDB 로 점검하기
*/
-- 11. 여기까지 진행이 되었으면 이제는 DB 일관성 검사를 진행하여 잘못된 부분이 없는지 확인합니다
USE ckmall
go
set quoted_identifier on
go
DBCC CheckDB
-- 12.. 오류 발견시 일관성 오류를 수정하기 위해 user를 싱글 유저로 변경합니다
Alter Database DBsize Set Single_user with rollback immediate
go
-- 13. 오류를 수정 합니다
DBCC CheckDB (`dbsize`,REPAIR_ALLOW_DATA_LOSS)
go
-- 14. 오류를 수정하였으면 다시 DBCC CheckDB를 수행합니다
DBCC CheckDB
go
-- 오류가 더 이상 없다면 user모드를 다시 변경하여 줍니다
Use master
go
Alter Database dbsize set multi_user
go
/* 15. 모든 작업이 완료되었습니다
마지막 정상 데이터를 보존하기 위해 DataBase를 FULL BACKUP을 받습니다
*/
첨부파일
- 비정상종료_MDF_복구하기.zip (1.3M) 1회 다운로드 | DATE : 2008-09-08 11:36:59
댓글목록
등록된 댓글이 없습니다.