[mssql] 응급모드 복구
2019. 12. 12. 11:02ㆍDB/MSSQL
반응형
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에 걸려 있던 응급 모드도 자동 해제됨.
그래도 응급모드가 복구 안되면 온라인모드로 변경해준다.
ALTER DB명 데이터베이스명 SET ONLINE;
단 세션이 열려 있을때는 ONLINE 이나 OFFLINE 이 안되고 잡혀 있어서 무한 반복한다.
select * from sys.dm_exec_sessions; 명령을 통해 접속 하고 있는 정보를 확인 후
kill 명령어를 통해 세션을 죽여야 바로 진행 된다.
반응형
'DB > MSSQL' 카테고리의 다른 글
[MSSQL] 조건 합 (0) | 2020.02.07 |
---|---|
[MSSQL] 세션 상태 및 진행률 확인 (0) | 2019.12.13 |
[MSSQL] 복구작업 (0) | 2016.03.18 |
[MSSQL] DB서버 최대 서버 메모리 설정 (0) | 2016.02.29 |
[MSSQL] ISDATE 사용하기 (0) | 2014.11.11 |