Symptome
Wenn Sie eine komplexe UPDATE-Anweisung zusammen mit einem NOLOCK-Hinweis für eine Tabelle in Microsoft SQL Server 2008, SQL Server 2012, SQL Server 2008 R2 oder SQL Server 2014 ausführen, kann es zu einer Beschädigung des nicht gruppierten Index kommen. Zusätzlich kann die folgende Fehlermeldung im SQL Server Fehlerprotokoll protokolliert werden:
Hinweis
<Datum><Uhrzeit> SPID # Fehler: 8646, Schweregrad: 21, Zustand: 1.
<Datum><Uhrzeit> spid # Indexeintrag in Index-ID 3 der Tabelle 2102402659 in Datenbank "<DatabaseName>" wurde nicht gefunden. Der angegebene Index ist beschädigt oder es liegt ein Problem mit dem aktuellen Updateplan vor. Führen Sie DBCC CHECKDB oder DBCC CHECKTABLE aus. Wenn das Problem weiterhin besteht, wenden Sie sich an den Produktsupport.
<Datum><Uhrzeit> spid # Mit 'dbghelp.dll' Version '4.0.5'
<Datum><Uhrzeit> spid # **Dumpthread - spid = 0, EC = 0x0000000BD70624C0
<Datum><Uhrzeit> SPID # ***Stack-Speicherabbild, das an Y:\MSSQL\MSSQL10.MSSQLSERVER\MSSQL\LOG\SQLDump0003.txt gesendet wird
<Datum><Uhrzeit> SPID # * *******************************************************************************
<Datum><Uhrzeit> SPID # *
<Datum><Uhrzeit> SPID # * BEGIN STACK DUMP:
<Datum><Uhrzeit> spid # * <Datum><Uhrzeit> SPID#
<Datum><Uhrzeit> SPID # *
<Datum><Uhrzeit> spid # * CPerIndexMetaQS::ErrorAbort - Indexbeschädigung
<Datum><Uhrzeit> SPID # *
Hinweis: Sie können einen NOLOCK-Hinweis auf Quelltabellen in einer Anweisung anwenden. Sie können jedoch keinen NOLOCK-Hinweis auf Zieltabellen in einer Anweisung anwenden.
Ursache
Dieses Problem tritt auf, weil der NOLOCK-Hinweis dazu führt, dass die Abfrage Werte in der Tabelle falsch liest, wenn die Abfrage dieselben Werte mehrmals liest.
Lösung
Das Problem wurde erstmals im folgenden kumulativen Update von SQL Server behoben.
Kumulatives Update 1 für SQL Server 2014 /de-de/help/2931693
Kumulatives Update 38 für SQL Server 2012 /de-de/help/2908007
Kumulatives Update 7 für SQL Server 2012 SP1 /en-us/help/2894115
Kumulatives Update 38 für SQL Server 2008 SP3 /en-us/help/2880350
Kumulatives Update 38 für SQL Server 2008 R2 SP2 /en-us/help/2887606
Informationen zu kumulativen Updates für SQL Server
Jedes neue kumulative Update für SQL Server enthält alle Hotfixes und Sicherheitsfixes, die im vorherigen kumulativen Update enthalten waren. Sehen Sie sich die neuesten kumulativen Updates für SQL Server an:
- Neuestes kumulative Update für SQL Server 2014
- Neuestes kumulative Update für SQL Server 2012
- Neuestes kumulatives Update für SQL Server 2012 SP1
- Neuestes kumulatives Update für SQL Server 2008 R2 SP2
- Neuestes kumulatives Update für SQL Server 2008 SP3
Status
Microsoft hat bestätigt, dass dies ein Problem bei den Microsoft-Produkten ist, die im Abschnitt „Gilt für“ aufgeführt sind.