Simptomi
Razmotrite sledeći scenario:
-
Imate veoma veliki Filestream sto.
-
Upit za brisanje redova pokrenete u tabeli Filestream koji kreira skup plan upita, kao što je onaj koji je filtriran unutrašnjim spojem u drugu veliku tabelu u sistemu.
-
Optimizator upita bira paralelni plan izvršavanja.
U ovom scenariju će doći dousedanja i možete dobiti poruke o greškama koje su slične sledećoj u evidenciji grešaka sistema SQL Server:
DateTime spid SpidNumber Error: 5553, Težina: 20, Stanje: 6.
DatumTime spid SpidNumber SQL Server unutrašnja greška. FILESTREAM menadžer ne može da nastavi sa trenutnom komandom.
Status
Microsoft je potvrdio da je ovo problem u Microsoft proizvodima koji su navedeni u odeljku "Odnosi se na".
Rešenje
Problem je rešen u sledećim kumulativnim ispravkama za SQL Server:
Kumulativne ispravke za SQL Server:
Svaka nova kumulativna ispravka za SQL Server sadrži sve hitne ispravke i sve bezbednosne ispravke koje su bile uključene u prethodne kumulativna ispravka. Pogledajte najnovije kumulativne ispravke za SQL Server:
Rešenje
Akoovo uradite, možeteda koristite sledeći metod:
Premestite unutrašnji upit za spajanje u zasebnu izjavu i sačuvajte rezultate u privremenoj tabeli. Zatim pokrenite upit za brisanje koji filtriraju stavke u privremenoj tabeli. Pored toga, možete da povećate prag troškova za paralelizam da biste primorali optimizator da serijalizuje plan upita.
Na primer:
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
IZBRIŠI SA DB.dbo. [Tabela] WHERE Alias IN (SELECT * FROM #T)
Reference
Saznajte više o terminologiji koja Microsoft koristi za opisivanje softverskih ispravki.