KB2878968 – LØSNING: Ikke-gruppert indeksfeil kan oppstå når du kjører en kompleks UPDATE-setning sammen med et NOLOCK-tips mot en tabell i SQL Server

Gjelder for
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)

Symptomer

Når du kjører et komplekst UPDATE-uttrykk sammen med et NOLOCK-hint mot en tabell i Microsoft SQL Server 2008, SQL Server 2012, SQL Server 2008 R2 eller SQL Server 2014, kan det oppstå feil på ikke-klynget indeks. I tillegg kan følgende feilmelding loggføres i SQL Server-feilloggen:

Obs!

<Dato><og klokkeslett> spid # Feil: 8646, Alvorsgrad: 21, Delstat: 1.
<Dato><og klokkeslett> spid # Finner ikke stikkord i indeks-ID 3 i tabell 2102402659, i databasen '<DatabaseName>'. Den angitte indeksen er skadet eller det er et problem med den gjeldende oppdateringsplanen. Kjør DBCC CHECKDB eller DBCC CHECKTABLE. Hvis problemet vedvarer, kontakter du kundestøtte.
<Dato><og klokkeslett> spid # Bruker 'dbghelp.dll' versjon '4.0.5'
<Dato><og klokkeslett> spid # **Dumptråd - spid = 0, EC = 0x0000000BD70624C0
<Dato><og klokkeslett> spid # ***Stakkdump sendes til Y:\MSSQL\MSSQL10.MSSQLSERVER\MSSQL\LOG\SQLDump0003.txt
<Dato><og klokkeslett> spid # * *******************************************************************************
<Dato><og klokkeslett> spid # *
<Dato><og klokkeslett> spid # * START STAKKDUMP:
<Dato><og klokkeslett> spid # * Dato><< og klokkeslett> spid#
<Dato><og klokkeslett> spid # *
<Dato><og klokkeslett> spid # * CPerIndexMetaQS::ErrorAbort - Indekskorrupsjon
<Dato><og klokkeslett> spid # *

Obs! Du kan bruke et NOLOCK-tips på kildetabeller i en setning. Du kan imidlertid ikke bruke et NOLOCK-tips på måltabeller i en setning.

Årsak

Dette problemet oppstår fordi NOLOCK-tipset fører til at spørringen feilaktig leser verdiene i tabellen når spørringen leser de samme verdiene flere ganger.

Oppløsning

Problemet ble først løst i den følgende kumulative oppdateringen av SQL Server.

Kumulativ oppdatering 1 for SQL Server 2014 /en-us/help/2931693

Kumulativ oppdatering 11 for SQL Server 2012 /en-us/help/2908007

Kumulativ oppdatering 7 for SQL Server 2012 SP1 /en-us/help/2894115

Kumulativ oppdatering 13 for SQL Server 2008 SP3 /en-us/help/2880350

Kumulativ oppdatering 9 for SQL Server 2008 R2 SP2 /en-us/help/2887606

Om kumulative oppdateringer for SQL Server

Hver nye kumulative oppdatering for SQL Server inneholder alle hurtigreparasjoner og alle sikkerhetsrettinger som fulgte med den forrige kumulative oppdateringen. Ta en titt på de nyeste kumulative oppdateringene for SQL Server:

      

Status

Microsoft har bekreftet at dette er et problem i Microsoft-produktene som er oppført i delen «Gjelder for».