ldf파일 없이 mdf 파일 만으로 데이터 베이스 복구 방법 > db

본문 바로가기

db

ldf파일 없이 mdf 파일 만으로 데이터 베이스 복구 방법

페이지 정보

작성자 서방님 댓글 0건 조회 20회 작성일 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을 받습니다
*/

 

첨부파일

댓글목록

등록된 댓글이 없습니다.

Total 447건 1 페이지
게시물 검색

회원로그인

접속자집계

오늘
149
어제
365
최대
592
전체
40,123

그누보드5
Copyright © seobangnim.com All rights reserved.
자바스크립트를 활성화 하세요![ 브라우저에서 자바스크립트를 활성화하는 방법 ]