🛢️DataBase/오류해결

[MSSQL] 데이터베이스 '복구 보류 중' 오류 해결

뉴발자 2024. 3. 12.
728x90

 

 

 

 

 

 

 

 

 

 

 

 

 

 

그림 1. MSSQL

 

 

에러 상황

데이터베이스를 사용하려는 중 데이터베이스 옆에 '복구 보류 중'이 표시됐다.

 

 

'복구 보류 중' 상태 원인

1. 데이터베이스가 정상적으로 종료되지 않음

 - 데이터베이스가 종료되고 로그 파일이 삭제될 때 COMMIT 되지 않은 활성화된 트랜잭션이 있을 수 있다.

 

2. 로그 파일을 다른 경로로 이동하려고 했지만 이 과정에서 로그 파일이 손상됨

 

3. 메모리 공간 부족 또는 디스크 저장 공간으로 인해서 데이터베이스 복구를 시작할 수 없음

728x90

 

 

해결 방법

1. 데이터베이스를 '응급 모드'로 변경

ALTER DATABASE DB_NAME SET EMERGENCY

 

 - READ_ONLY 상태이다.

 

 - 로깅을 비활성화하고 시스템 관리자에게만 엑세스 권한이 부여된다.

 

 

2. 데이터베이스를 단일 사용자 모드로 변경

ALTER DATABASE DB_NAME SET SINGLE_USER

 

만약 단일 사용자 변경 시 무한 로딩이 걸리는 경우엔 아래의 명령어를 실행해준다.

ALTER DATABASE DB명 SET SINGLE_USER WITH ROLLBACK IMMEDIATE

 

 

3. 데이터베이스 복구

DBCC CHECKDB (DB_NAME, REPAIR_ALLOW_DATA_LOSS) WITH ALL_ERRORMSGS

 

 - 데이터베이스를 복구하지만 데이터 손실이 발생할 수 있다.

 

 - MS에서는 해당 옵션은 최후의 수단으로만 사용하며, 이 옵션에 대해 경고하고 있다.

 

 

4. 데이터베이스를 복수 사용자 모드로 변경

ALTER DATABASE DB_NAME SET MULTI_USER

 

 

 

 

 

 

 

 

 

 

728x90

댓글