Symptomy
Po uruchomieniu złożonej instrukcji Update z instrukcją NOLOCK w tabeli w programie Microsoft SQL Server 2008, SQL Server 2012, SQL Server 2008 R2 lub SQL Server 2014 może wystąpić uszkodzenie indeksu nieklastrowanego. Ponadto w dzienniku błędów programu SQL Server może być rejestrowany następujący komunikat o błędzie:
Data <><godzina> identyfikatorze spid # błąd: 8646; ważność: 21; stan: 1. <Data><godzina> Identyfikator SPID # nie można odnaleźć wpisu indeksu w indeksie o identyfikatorze 3 w tabeli 2102402659 w bazie danych "<DatabaseName>". Wskazany indeks jest uszkodzony lub wystąpił problem z bieżącym planem aktualizacji. Uruchom polecenie DBCC CHECKDB lub DBCC CHECKTABLE. Jeśli problem będzie nadal występował, skontaktuj się z pomocą techniczną produktu. <data><godzina> numeru SPID # przy użyciu funkcji "dbghelp. dll" w wersji "4.0.5" <Date><Time> Identyfikator SPID # * * Zrzuć wątek-SPID = 0, EC = 0x0000000BD70624C0<Date><czas SPID # * * * zrzut stosu wysyłany do Y:\MSSQL\MSSQL10. MSSQLSERVER\MSSQL\LOG\SQLDump0003.txt><2 data><godzina> Identyfikator SPID # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * (data >< godzina > Identyfikator SPID # * <Data ><> identyfikator SPID # * początek zrzutu stosu: <Date><> daty <numeru SPID # *><Data > godziny < numeru CPerIndexMetaQS: Date : <Time ErrorAbort — uszkodzenie indeksu><0 Data><godzina> identyfikatorze SPID # * Time
UwagaW instrukcji można zastosować wskazówkę NOLOCK do tabel źródłowych. Nie można jednak zastosować wskazówki NOLOCK do tabel docelowych w instrukcji.
Przyczyna
Ten problem występuje, ponieważ Wskazówka NOLOCK powoduje, że kwerenda niepoprawnie odczytuje wartości w tabeli, gdy zapytanie odczytuje te same wartości wielokrotnie.
Rozwiązanie
Ten problem został po raz pierwszy rozwiązany w poniższej zbiorczej aktualizacji programu SQL Server.
Zbiorcza aktualizacja 1 dla programu SQL Server 2014 /en-us/help/2931693
Zbiorcza aktualizacja 11 dla programu SQL Server 2012 /en-us/help/2908007
Zbiorcza aktualizacja 7 dla programu SQL Server 2012 z dodatkiem SP1 /en-us/help/2894115
Zbiorcza aktualizacja 13 dla programu SQL Server 2008 z dodatkiem SP3 /en-us/help/2880350
Zbiorcza aktualizacja 9 dla programu SQL Server 2008 R2 z dodatkiem SP2 /en-us/help/2887606
Każda nowa Zbiorcza aktualizacja programu SQL Server zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń uwzględnione w poprzedniej aktualizacji zbiorczej. Zapoznaj się z najnowszymi aktualizacjami zbiorczymi dla programu SQL Server:
-
Najnowsza Zbiorcza aktualizacja dla programu SQL Server 2014
-
Najnowsza Zbiorcza aktualizacja dla programu SQL Server 2012
-
Najnowsza Zbiorcza aktualizacja dla programu SQL Server 2012 z dodatkiem SP1
-
Najnowsza Zbiorcza aktualizacja dla programu SQL Server 2008 R2 z dodatkiem SP2
-
Najnowsza Zbiorcza aktualizacja dla programu SQL Server 2008 z dodatkiem SP3
Stan
Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji "dotyczy".