적용 대상
SQL Server 2008 Service Pack 3 SQL Server 2008 Enterprise SQL Server 2008 Developer SQL Server 2008 Standard SQL Server 2008 R2 Datacenter SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Standard SQL Server 2008 R2 Web SQL Server 2008 R2 Workgroup SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard SQL Server 2012 Web SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use)

증상

Microsoft SQL Server 2008, SQL Server 2012, SQL Server 2008 R2 또는 SQL Server 2014의 테이블에 대해 NOLOCK 힌트와 함께 복잡 한 UPDATE 문을 실행 하면 클러스터 되지 않은 인덱스가 손상 될 수 있습니다. 또한 SQL Server 오류 로그에 다음과 같은 오류 메시지가 기록 될 수 있습니다.

<날짜><> spid # 오류: 8646, 심각도: 21, 상태: 1. <날짜><시간> spid #에서는 ' <DATABASENAME> ' 데이터베이스에서 테이블 2102402659의 인덱스 ID 3에 있는 인덱스 항목을 찾을 수 없습니다. 표시 된 색인이 손상 되었거나 현재 업데이트 계획에 문제가 있습니다. DBCC CHECKDB 또는 DBCC CHECKTABLE를 실행 합니다. 문제가 지속 되 면 기술 지원에 문의 하세요><<. ' dbghelp ' 버전 ' 4.0.5 '을 사용 하 여> spid # <날짜><time> spid # * * Dump 스레드-Spid = 0, EC = 0x0000000BD70624C0<Date><time> spid # * * * Y:\MSSQL\MSSQL10. Date MSSQLSERVER\MSSQL\LOG\SQLDump0003.txt><2 날짜><시간> spid # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * <날짜><Time시간> spid # * <날짜><시간> spid # * 시작 스택 덤프: <date><time> spid # * <날짜><spid # *> 날짜 <time><spid # * CPerIndexMetaQS:: errorabort-인덱스 손상><0 Date날짜><Date시간> Time spid # * TimeDate

참고표의 원본 테이블에 NOLOCK 힌트를 적용할 수 있습니다. 그러나, 명령문의 대상 표에는 NOLOCK 힌트를 적용할 수 없습니다.

원인

이 문제는 NOLOCK 참고로 인해 쿼리가 같은 값을 여러 번 읽을 때 테이블의 값을 올바르게 읽지 못하기 때문에 발생 합니다.

각각의 새로운 새 누적 업데이트에는 이전 누적 업데이트에 포함 된 모든 핫픽스와 모든 보안 수정 사항이 포함 되어 있습니다. SQL Server에 대 한 최신 누적 업데이트를 확인 하세요.

상태

Microsoft는 "적용 대상" 절에 나열한 Microsoft 제품에서 이 문제를 확인했습니다.

도움이 더 필요하세요?

더 많은 옵션을 원하세요?

구독 혜택을 살펴보고, 교육 과정을 찾아보고, 디바이스를 보호하는 방법 등을 알아봅니다.