Simptomai
Paleidus sudėtingą naujinimo sakinį kartu su " NOLOCK " UŽUOMINĄ "Microsoft SQL Server" 2008, "SQL Server" 2012, "SQL Server 2008 R2" arba "SQL Server" 2014, gali kilti nonclustered indeksas. Be to, SQL serverio klaidų žurnale gali būti užregistruotas šis klaidos pranešimas:
<data><laiko> spid # klaida: 8646, sunkumas: 21, State: 1. <data><laikas> SPID # nepavyksta surasti indekso įrašo 3 indekso ID 2102402659 lentelėje "<duomenų bazės pavadinimas>". Nurodytas indeksas sugadintas arba iškilo problema dėl dabartinio naujinimo plano. Vykdyti DBCC CHECKDB arba DBCC CHECKTABLE. Jei problema kartojasi, kreipkitės į produktų palaikymo tarnybą. <data><laiko> SPID # naudojant "Dbghelp. dll" versija "4.0.5" <data><laiko> SPID # * * dump Thread-SPID = 0, EB = 0x0000000bd70624c0<data><laikas> SPID # * * * rietuvės iškelties siunčiami į Y:\MSSQL\MSSQL10. MSSQLSERVER\MSSQL\LOG\SQLDump0003.txt><2 data><laiko> SPID # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * <data><Time> SPID # * <data><laikas> spid # * Pradžia rietuvės iškelties: <data><laiko> spid # * <data><laikas> SPID # <data><laikas> SPID # * <data><laikas> SPID # * CPerIndexMetaQS:: ErrorAbort – indekso sugadinimo><0 data><laiko> SPID # *
Pastaba. NOLOCK užuominą galite taikyti sakinio šaltinio lentelėms. Tačiau negalima taikyti NOLOCK užuominos tikslinėms lentelėms sakinyje.
Priežastis
Ši problema kyla dėl to, kad NOLOCK užuomina sukelia užklausą netinkamai skaityti reikšmes lentelėje, kai užklausa perskaito tas pačias reikšmes kelis kartus.
Sprendimas
Problema pirmą kartą buvo išspręsta šį kaupiamąjį naujinimą SQL serverio.
Kaupiamasis naujinimas 1 SQL serverio 2014 /en-us/help/2931693
Kaupiamasis naujinimas 11 SQL serverio 2012 /en-us/help/2908007
Kaupiamasis naujinimas 7 SQL serverio 2012 SP1 /en-us/help/2894115
Kaupiamasis naujinimas 13 SQL serverio 2008 SP3 /en-us/help/2880350
Kaupiamasis naujinimas 9 SQL serverio 2008 R2 SP2 /en-us/help/2887606
Kiekvienas naujas Kaupiamasis naujinimas, skirtas "SQL Server", yra visos karštosios pataisos ir visos saugos pataisos, kurios buvo pridėtos prie ankstesnio kaupiamojo naujinimo. Peržiūrėkite naujausius kaupiamuosius SQL serverio naujinimus:
-
Naujausias Kaupiamasis naujinimas, skirtas "SQL Server 2014"
-
Naujausias Kaupiamasis naujinimas, skirtas "SQL Server 2012"
-
Naujausias Kaupiamasis naujinimas, skirtas "SQL Server" 2012 SP1
-
Naujausias Kaupiamasis naujinimas, skirtas "SQL Server" 2008 R2 SP2
-
Naujausias Kaupiamasis naujinimas, skirtas "SQL Server" 2008 SP3
Statusą
"Microsoft" patvirtino, kad tai yra "Microsoft" produktų, išvardytų skyriuje "taikoma", problema.