Ongelman ilmenemistapa
Kun suoritat monimutkaisen UPDATE-komennon yhdessä NOLOCK-vihjeen kanssa taulukossa Microsoft SQL Server 2008:ssa, SQL Server 2012:ssa, SQL Server 2008 R2:ssa tai SQL Server 2014:ssä, ei-klusteroitu indeksi voi vioittua. Lisäksi seuraava virhesanoma saatetaan kirjata SQL Server -virhelokiin:
Huomautus
<Päivämäärä><ja kellonaika> spid # Virhe: 8646, vakavuus: 21, tila: 1.
<Date><Time spid> # DatabaseName-tietokannan<> taulukon 2102402659 indeksitunnuksesta 3 ei löydy indeksimerkintää. Merkitty indeksi on vioittunut tai nykyisessä päivityssuunnitelmassa on ongelma. Suorita DBCC CHECKDB tai DBCC CHECKTABLE. Jos ongelma jatkuu, ota yhteyttä tuotetukeen.
<Date><Time spid> # Using 'dbghelp.dll' version '4.0.5'
<Date><Time spid> # **Dump thread - spid = 0, EC = 0x0000000BD70624C0
<Date><Time spid> # ***Stack Dump lähetetään Y:\MSSQL\MSSQL10.MSSQLSERVER\MSSQL\LOG\SQLDump0003.txt
<Date><Time spid> # * *******************************************************************************
<Date><Time Spid> # *
<Date><Time spid> # * ALOITA PINOVEDOS:
<Date><Time spid> # * <Date><Time Spid> #
<Date><Time Spid> # *
<Date><Time spid> # * CPerIndexMetaQS::ErrorAbort – Indeksin vioittuminen
<Date><Time Spid> # *
Huomautus: Voit käyttää NOLOCK-vihjettä lausekkeen lähdetaulukoissa. Et kuitenkaan voi käyttää NOLOCK-vihjettä lauseen kohdetaulukoihin.
Syy
Tämä ongelma ilmenee, koska NOLOCK-vihje aiheuttaa sen, että kysely lukee taulukon arvot väärin, kun kysely lukee samat arvot useita kertoja.
Ratkaisu
Ongelma korjattiin ensimmäisen kerran seuraavassa SQL Server kumulatiivisessa päivityksessä.
SQL Server 2014:n kumulatiivinen päivitys 1 /en-us/help/2931693
SQL Server 2012:n kumulatiivinen päivitys 11 /en-us/help/2908007
SQL Server 2012 SP1:n kumulatiivinen päivitys 7 /en-us/help/2894115
Kumulatiivinen päivitys 13, SQL Server 2008 SP3 /en-us/help/2880350
Kumulatiivinen päivitys 9, SQL Server 2008 R2 SP2 /en-us/help/2887606
Tietoja SQL Serverin kumulatiivisista päivityksistä
Jokainen uusi SQL Server -kumulatiivinen päivitys sisältää kaikki edelliseen kumulatiiviseen päivitykseen sisältyvät hotfix-korjaukset ja tietoturvakorjaukset. Tutustu SQL Serverin uusimpiin kumulatiivisiin päivityksiin:
- SQL Server 2014:n uusin kumulatiivinen päivitys
- SQL Server 2012:n uusin kumulatiivinen päivitys
- SQL Server 2012 SP1:n uusin kumulatiivinen päivitys
- SQL Server 2008 R2 SP2:n uusin kumulatiivinen päivitys
- SQL Server 2008 SP3:n uusin kumulatiivinen päivitys
Tila
Microsoft on vahvistanut tämän olevan ongelma niissä Microsoftin tuotteissa, jotka ovat listattuna Koskee seuraavia tuotteita -osiossa.