Príznaky
Keď spustíte príkaz komplexnej aktualizácie spolu s pomôckou NOLOCK na tabuľku v Microsoft SQL Server 2008, SQL Server 2012, SQL Server 2008 R2 alebo SQL Server 2014, môže sa vyskytnúť neklastrovaný index korupcie. Okrem toho môže byť v denníku chýb servera SQL Server zaznamenaná nasledujúca chybová správa:
<dátum><času> číslo spid # error: 8646, závažnosť: 21, stav: 1. <Dátum><času> číslo SPID # nie je možné nájsť položku registra v identifikácii indexu 3, tabuľky 2102402659, v databáze "<DatabaseName>". Uvedený index je poškodený alebo sa vyskytol problém s aktuálnym plánom aktualizácie. Spustite príkaz DBCC CHECKDB alebo DBCC CHECKTABLE. Ak problém pretrváva, obráťte sa na oddelenie technickej podpory. <dátum><času> číslo SPID # s použitím ' dbghelp. dll ' version ' 4.0.5 ' <Dátum><času> SPID # * * dump vlákno-SPID = 0, EC = 0x0000000BD70624C0<Dátum><času> SPID # * * * výpisu zásobníka sa odosielajú do Y:\MSSQL\MSSQL10. MSSQLSERVER\MSSQL\LOG\SQLDump0003.txt><2 dátum><času> číslo SPID # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * <dátum >číslo SPID # * <dátum >< času > číslo spid # * begin dump STACK: <dátum >< času > číslo spid # * <dátum >< času > číslo SPID # <dátum >< času > číslo SPID # * <dátum >< času > číslo SPID # * CPerIndexMetaQS:><: ErrorAbort-index korupcie><0 Dátum><času> číslo SPID # *
Poznámka: Pomôcku NOLOCK môžete použiť na zdrojové tabuľky v príkaze. Môžete však použiť pomôcku NOLOCK na zacielenie tabuliek vo výpise.
Príčina
Tento problém sa vyskytuje, pretože pomôcka NOLOCK spôsobí, že dotaz nesprávne číta hodnoty v tabuľke, keď dotaz číta rovnaké hodnoty viackrát.
Riešenie
Tento problém bol najskôr vyriešený v nasledujúcej kumulatívnej aktualizácii SQL servera.
Kumulatívna aktualizácia 1 pre SQL Server 2014 /en-us/help/2931693
Kumulatívna aktualizácia 11 pre SQL Server 2012 /en-us/help/2908007
Kumulatívna aktualizácia 7 pre SQL Server 2012 SP1 /en-us/help/2894115
Kumulatívna aktualizácia 13 pre SQL Server 2008 SP3 /en-us/help/2880350
Kumulatívna aktualizácia balíka 9 pre SQL Server 2008 R2 SP2 /en-us/help/2887606
Každá nová Kumulatívna aktualizácia pre SQL Server obsahuje všetky rýchlych opráv a všetky opravy zabezpečenia, ktoré boli súčasťou predchádzajúcej kumulatívnej aktualizácie. Pozrite si najnovšie kumulatívne aktualizácie pre SQL Server:
Stav
Spoločnosť Microsoft potvrdzuje, že ide o problém v produktoch spoločnosti Microsoft, ktoré sú uvedené v tomto článku v časti Informácie v tomto článku sa týkajú nasledujúcich produktov.