Požymiai
Apsvarstykite šį scenarijų:
- Turite labai didelę "Filestream" lentelę.
- Vykdote eilučių naikinimo užklausą lentelėje "Filestream" ir taip sukuriamas brangus užklausų planas, pvz., filtruojamas pagal vidinę jungtį su kita didele sistemos lentele.
- Užklausų optimizavimo priemonė pasirenka lygiagrečią vykdymo planą.
Tokiu atveju bus pateiktas patvirtinimas ir galite gauti klaidų pranešimus, panašius į šiuos "„SQL Server“" klaidų žurnale:
DateTime spid SpidNumber Klaida: 5553, Sunkumas: 20, Būsena: 6.
DateTime spid SpidNumber „SQL Server“ vidinė klaida. FILESTREAM tvarkytuvas negali tęsti dabartinės komandos.
Būsena
„„Microsoft““ patvirtino, kad tai yra „„Microsoft““ produktų, išvardytų dalyje „Taikoma“, problema.
Sprendimas
Problema išspręsta šiuose kaupiamuosiuose „SQL Server“ naujinimuose:
Apie "„SQL Server“" kaupiamuosius naujinimus:
Kiekviename naujame „SQL Server“ kaupiamajame naujinime yra visos karštosios pataisos ir visos saugos pataisos, kurios buvo įtrauktos į ankstesnį kaupiamąjį naujinimą. Peržiūrėkite naujausius "„SQL Server“" kaupiamuosius naujinimus:
Sprendimo būdas
Norėdami išspręsti šią problemą, galite naudoti šį metodą:
Perkelkite inner join užklausą į atskirą sakinį ir įrašykite rezultatus į laikinąją lentelę. Tada vykdykite naikinimo užklausą, kuri filtruojama pagal įrašus laikinojoje lentelėje. Be to, galite padidinti lygiagretumo išlaidų ribą, kad optimizuotojas būtų priverstas išdėstyti užklausos planą nuosekliai.
Pavyzdžiui:
SELECT RefTable.Alias INTO #T FROM DB.dbo.OuterTable INNER JOIN DB.dbo.RefTable ON RefTable.Alias = OuterTable.Alias
WHERE OuterTable.Alias > 30006 AND OuterTable.Alias < 30010
PANAIKINTI IŠ DB.dbo. [Lentelė] KUR PSEUDONIMAS (pasirinkite * IŠ #T)
Nuorodos
Sužinokite daugiau apie terminus, kuriuos „„Microsoft““ naudoja apibūdindama programinės įrangos naujinimus.