KB2878968-FIX: SQL Server의 테이블에 대해 NOLOCK 힌트와 함께 복잡 한 UPDATE 문을 실행할 때 비클러스터형 인덱스 손상이 발생할 수 있음

증상

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 제품에서 이 문제를 확인했습니다.

추가 도움이 필요하신가요?

기술 향상
교육 살펴보기
새로운 기능 우선 가져오기
Microsoft Insider 참가

이 정보가 유용한가요?

소중한 의견에 감사드립니다.

피드백을 주셔서 감사합니다. Office 지원 에이전트와 연락하는 것이 도움이 될 것 같습니다.

×