2017년 2월 10일 금요일

[MSSQL] 응급 복구 모드로 DB복구 하기


자료출처: http://cafe.naver.com/iwillgosu/762

Step 1:
ALTER DATABASE DB명 SET EMERGENCY
GO
 
Step 2:
DBCC CHECKDB('DB명')
GO
  • 위의 결과에서 어떤것들이 검색되었다고 나오면 복구 가능성이 높고
  • 그렇지 않고 메모리 공간 부족등 이상한 오류가 나오면 힘들다.
검색 결과가 나오면
 
Step 3: 단일 사용자 모드로 변경
ALTER DATABASE DB명 SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
  • DBCC CHECKDB 옵선
    • REPAIR_FAST : 시간이 많이 소요 되지 않고, 데이터의 손실이 없는 사소한 오류
    • REPAIR_REBUILD : REPAIR_FAST가 하는 모든 작업, 인덱스 재생성과 같이 시간이 소요되는 작업이 복구 과정에서 진행됨,역시 데이터 손실 위험을 없다.
    • REPAIR_ALLOW_DATA_LOSS : REPAIR_REBUILD가 하는 모든 작업, 할당 오류, 구조적 행 오류나 페이지 오류, 손상된 텍스트 개체 삭제를 수정하기 윈한 행과 페이지의 할당 및 할당 취소 등의 작업이 진행된다.
      Step 3: DB복구
Step 4:
DBCC CHECKDB('DB명', REPAIR_ALLOW_DATA_LOSS)
  • 복구 불가능한 데이터는 버리고 테이블 복구
Step 5: 다중 사용자 모드로 변경
ALTER DATABASE DB명 SET MULTI_USER
GO
  • DB에 걸려 있던 응급 모드도 자동 해제됨.
 

댓글 없음:

댓글 쓰기