증상
다음과 같은 경우를 생각해 볼 수 있습니다.
-
Microsoft SQL Server 2008에서 또는 다음 쿼리 중 하나를 사용 하 여 SQL Server 2008 R2에서 테이블에 여러 행을 삽입 합니다.
-
INSERT INTO <target_table> SELECT * FROM <target_table> WHERE <predicate>
-
SELECT * INTO <target_table> FROM <source_table> WHERE <predicate>
참고
-
<target_table> 자리 표시자는 실제 대상 테이블 이름을 나타냅니다.
-
<술어> 자리 표시자는 실제 조건자를 나타냅니다.
-
<source_table> 자리 표시자는 실제 원본 테이블을 나타냅니다.
-
-
테이블의 잠금 에스컬레이션 임계값을 초과 했습니다.
이 시나리오에서는 데이터베이스 엔진이 테이블의 잠금을 에스컬레이션 하지 않습니다.
원인
이 문제는 SQL Server가 삽입 작업으로 생성 되는 모든 새 잠금을 내부적으로 카운트 하지 않기 때문에 발생 합니다. 따라서 필요한 경우 잠금 에스컬레이션 임계값이 트리거되지 않을 수 있습니다.
해결 방법
SQL Server 2008에 대 한 서비스 팩 정보
이 문제를 해결 하려면 SQL Server 2008의 최신 서비스 팩을 구하십시오. 자세한 내용은 다음 문서 번호를 클릭 하 여 Microsoft 기술 자료 문서를 참조 하세요.
968382 SQL Server 2008의 최신 서비스 팩을 구하는 방법
SQL Server 2008 R2에 대 한 서비스 팩 정보
이 문제를 해결 하려면 SQL Server 2008 R2 용 최신 서비스 팩을 구하십시오. 자세한 내용은 다음 문서 번호를 클릭 하 여 Microsoft 기술 자료 문서를 참조 하세요.
2527041SQL Server 2008 R2의 최신 서비스 팩을 구하는 방법
상태
Microsoft는 "적용 대상" 절에 나열한 제품에서 이 문제를 확인했습니다.이 문제는 sql server 2008 용 sql server 2008 서비스 팩 2에서 처음 수정 되었습니다 .이 문제는 sql server 2008 R2 용 SQL Server 2008 R2 서비스 팩 1에서 처음 수정 되었습니다.
추가 정보
잠금 에스컬레이션에 대 한 자세한 내용은 다음 Microsoft TechNet 웹 사이트를 방문 하세요.
잠금 에스컬레이션에 대 한 일반 정보테이블의 잠금이 에스컬레이션 되는지 여부를 확인 하려면 다음 Transact-sql 문을 실행 합니다.
USE tempdbGOCREATE TABLE x (i INT NOT NULL PRIMARY KEY)GOBEGIN TRANINSERT xSELECT TOP (40000)ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS rFROM master..spt_values a, master..spt_values bORDER BYrSELECTCOUNT(*)FROM sys.dm_tran_locksWHERE request_session_id = @@SPID ROLLBACKGODROP TABLE x
테이블의 잠금이 에스컬레이션 되는 경우 마지막 SELECT 문은 값 1 또는 2를 반환 합니다. 테이블의 잠금이 에스컬레이션 되지 않으면 마지막 SELECT 문은 40066 또는 40067값을 반환 합니다.