Applies ToSQL 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)

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.

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:

Stan

Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji "dotyczy".

Potrzebujesz dalszej pomocy?

Chcesz uzyskać więcej opcji?

Poznaj korzyści z subskrypcji, przeglądaj kursy szkoleniowe, dowiedz się, jak zabezpieczyć urządzenie i nie tylko.

Społeczności pomagają zadawać i odpowiadać na pytania, przekazywać opinie i słuchać ekspertów z bogatą wiedzą.