본문 바로가기

RDBMS/SQL Server

SQL Server DB 복구기

한 이틀동안 데브피아에 올라온 질문글 하나 붙잡고 시간날 때마다 한 삽질의 결과 :



1. 발단

DB가 깨졌다는 문의글 올라옴. MDF 파일을 실수로 삭제했다가 리커버리 프로그램으로 복구했다고 함.




2. 전개

사람들이 일반적인 복구방법 알려줌. 하지만 안됨.







케냘은 어설프게 리플을 달았다가 데이터 파일 받음.
다른 할 일도 많은데 괜히 매달려봄 -_-;




3. 분석

- 아무리 봐도 mdf 파일이 깨진 것 같다는 생각이 듬.
수없이 attach 시도 : 그냥 attach, 같은 이름의 DB 생성 후 파일 바꿔치기 등. 하지만 실패.
Hex Editor Neo(http://www.hhdsoftware.com/Products/home/hex-editor-free.html, 헥사 에디터의 일종)를 설치해서 파일 내용 살펴보고 엉뚱한 내용(.resx 파일의 내용이 기록되어 있었음)이 겹쳐써진 것을 확인, mdf 파일이 깨졌다고 결론.

- 로그 파일(ldf) 분석 시도
mdf가 깨지긴 했지만, ldf 파일 내용을 살펴보니 온전한 것 같아서 로그만 분석할 수 있는 도구가 있는지 찾아봄.
Lumigent Log Explorer for SQL Server, SQL Log Rescue 발견.
하지만 sql2000만 적용 가능. 뭐이!
... 결국 ldf 파일을 직접 에디터에서 살펴보고 Insert 로그 501건 확인.
하지만 이정도의 데이터 양이면 ... 질문자가 애초에 의도했던 데이터가 아니라고 생각. 아마도 풀백업 로그나 벌크 로그(이름 맞는지 모르겠다) 모드가 아니어서 트랜잭션 로그가 모두 기록되지 않았다고 결론.




4. 결과

무슨 결과 씩이나 .. 그냥 실패했다고 메일 보냈지 뭐 -_-;

우리 모두 백업을 생활화합시다.