데이터베이스가 RESTORING 상태에 갇힌 이유의 근본 원인 식별 데이터베이스를 수동으로 복원하면 문제없이 완료됩니다. CHECKDB복원

데이터베이스 RESTORING상태 문제를 해결하는 질문이 있다는 것을 알고 있으며 이러한 솔루션을 사용하여 데이터베이스를 온라인으로 수동으로 다시 가져 왔지만 시나리오는 약간 다릅니다.

프로덕션 사본을 DEV 인스턴스로 복원하는 Powershell 스크립트를 사용하는 자동 복원이 있습니다. 스크립트는 약 1 년 동안 변경되지 않았으며 때로는 복원 프로세스가 완료되었지만 복원 된 데이터베이스는 RESTORING상태에 머물러 있습니다 (때로는 스크립트가 제대로 작동하고 때로는 이와 같이 실패 함).

프로세스를 수동으로 다시 실행할 때마다 작동하거나 SSMS의 사용자 인터페이스에서 또는 T-SQL을 통해 데이터베이스를 수동으로 복원하면 문제없이 완료됩니다.

CHECKDB복원 된 DB 에서 실행하도록 권장하는 답변을 찾았 지만이 문제의 원인으로 아무것도 나오지 않았습니다.

복원 스크립트는 데이터베이스의 전체 백업을 복원하고 "WITH RECOVERY"옵션을 사용하기 때문에 실제로 복원 프로세스를 사용하고 있지만 복원 프로세스를 중지시킬 수있는 항목을 찾으려고합니다 "WITH RECOVERY".

왜 이런 일이 때때로 발생하는지 이해하려고 노력하고 있기 때문에 어떤 제안이라도 정말로 감사합니다.

DB를 다시 한 번 수동으로 복원하는 증상을 치료하는 대신 문제의 근본 원인을 해결하고 싶습니다.

최신 정보:

@Brent 권장 Github Gist- 여기 .



답변

Occam의 면도기 는 다음과 같이 명백히 제안합니다.

스크립트가 때때로 데이터베이스를 복원 상태로두면 스크립트를 디버그하십시오.

테이블이나 파일에서하고있는 일을 기록하는 것으로 시작하십시오. 그런 다음 데이터베이스가 복원 중 상태가되면 로그를 통해 뒤로 돌아가서 무엇이 잘못되었는지 확인하십시오. (커뮤니티로부터 두 번째 눈을 원한다면, Github Gist로 스크립트를 업로드 해보십시오. 그러나 크면 클수록 버그를 발견하기가 더 어려울 수 있습니다.)

그렇게하지 않으려면 프로파일 러 또는 확장 이벤트 추적을 실행하여 복원 이벤트를 추적하십시오. 그러나 경고 보다 훨씬 어렵습니다. 시도하고 실패한 독자의 아이디어를 더 많이 보려면 해당 게시물에 대한 의견을 읽으십시오.