0

테스트 시나리오의 경우 SQL 서버 인스턴스에서 읽기 커밋 된 스냅 샷을 해제해야합니다. 테스트 후에 변경 사항을 되돌려 야합니다. IF 문을 사용하여 수행 할 작업을 결정합니다. 다음은 내가 사용하는 스크립트입니다.SQL Server에서 읽기 전용 스냅 숏을 설정하는 동안 교착 상태를 방지하려면 어떻게해야합니까?

USE [master] 
GO 

IF 'Mycondition' 
BEGIN 
    ALTER DATABASE [MyDB] SET SINGLE_USER WITH ROLLBACK IMMEDIATE 
    ALTER DATABASE [MyDB] SET READ_COMMITTED_SNAPSHOT OFF WITH NO_WAIT 
    ALTER DATABASE [MyDB] SET MULTI_USER WITH NO_WAIT 
END 
ELSE 
BEGIN 
    ALTER DATABASE [MyDB] SET SINGLE_USER WITH ROLLBACK IMMEDIATE 
    ALTER DATABASE [MyDB] SET READ_COMMITTED_SNAPSHOT ON WITH NO_WAIT 
    ALTER DATABASE [MyDB] SET MULTI_USER WITH NO_WAIT 
END 
GO 

그러나이 스크립트를 실행하면 간헐적으로 교착 상태가있는 것 같습니다. 어떤 때는 교착 상태가 발생하고 데이터베이스가 단일 사용자 모드로 고정되어있는 경우가 있습니다. 어쨌든 내가 그런 일이 일어나지 않도록 할 수 있습니까? 나는 WITH NO_WAIT 절을 제거하는 것을 고려했다 그러나 저것은 돕는 것을 보이지 않았다.

답변

0

WITH NO_WAIT 절을 제거했을 때 내가 놓친 것처럼 보입니다. 그것을 제거하면 잘 작동합니다.