증상
Microsoft SQL Server Compact 3.5에서 다음과 같은 시나리오를 고려 하세요.
-
2 개의 serializable 격리 트랜잭션을 사용할 수 있습니다.
-
두 트랜잭션 모두 TABLOCK 잠금 힌트 또는 XLOCK 잠금 힌트가 포함 된 테이블에서 DML 작업 (쿼리/DML)을 수행 하려고 합니다.
이 시나리오에서는 교착 상태가 발생할 수 있습니다.
원인
이 문제는 두 트랜잭션이 XLOCK에 대해 서로 대기 하기 때문에 발생 합니다. 쿼리를 컴파일하면 두 트랜잭션에서 테이블에 대 한 공유 잠금을 얻은 다음 serializable 격리를 위해 잠금을 유지 합니다. 두 트랜잭션에서 모두 실행을 수행 하려고 하면 (XLOCK 잠금 힌트를 포함 하는 동일한 테이블의 쿼리) 두 트랜잭션이 모두 XLOCK에 대해 대기 합니다. 따라서 교착 상태가 발생 합니다.참고이 문제는 두 트랜잭션에서 TABLOCK 잠금 힌트가 포함 된 동일한 테이블에서 DML 작업을 수행 하는 경우에도 발생 합니다.
해결 방법
SQL Server Compact 3.5 서비스 팩 2
이 문제에 대 한 픽스는 먼저 누적 업데이트 2에서 릴리스 되었습니다. SQL Server 2008 R2 용 누적 업데이트 패키지를 구하는 방법에 대 한 자세한 내용은 다음 문서 번호를 클릭 하 여 Microsoft 기술 자료 문서를 참조 하세요.
2289547 SQL Server Compact 3.5 서비스 팩 2 용 누적 업데이트 2
상태
Microsoft는 "적용 대상" 절에 나열한 제품에서 이 문제를 확인했습니다.
추가 정보
교착 상태에 대 한 자세한 내용을 보려면 다음 MSDN (Microsoft Developer Network) 웹 사이트를 방문 하세요.
트리거되DML에 대 한 자세한 내용을 보려면 다음 MSDN 웹 사이트를 방문 하세요.
M소프트웨어 업데이트 용어에 대한 자세한 내용은 다음 문서 번호를 클릭하여 Microsoft 기술 자료 문서를 참조하십시오.
824684 Microsoft 소프트웨어 업데이트를 설명하는 데 사용되는 표준 용어에 대한 설명