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:
- Den nyeste kumulative oppdateringen for SQL Server 2014
- Den nyeste kumulative oppdateringen for SQL Server 2012
- Den nyeste kumulative oppdateringen for SQL Server 2012 SP1
- Den nyeste kumulative oppdateringen for SQL Server 2008 R2 SP2
- Den nyeste kumulative oppdateringen for SQL Server 2008 SP3
Status
Microsoft har bekreftet at dette er et problem i Microsoft-produktene som er oppført i delen «Gjelder for».