Příznaky
Vezměte v úvahu následující scénář:
- Máte velmi velkou tabulku Filestream.
- Spustíte odstraňovací dotaz řádků v tabulce Filestream, který vytvoří náročný plán dotazu, jako je například dotaz filtrovaný vnitřním spojením s jinou velkou tabulkou v systému.
- Optimalizátor dotazů zvolí paralelní plán provádění.
V tomto scénáři dojde k výskytu kontrolního výrazu a v protokolu chyb serveru SQL Server se můžou zobrazit chybové zprávy podobné následující:
DateTime spid SpidNumber Error: 5553, Severity: 20, State: 6.
DateTime spid SpidNumber Vnitřní chyba SQL Server. FILESTREAM manager nemůže pokračovat s aktuálním příkazem.
Stav
Společnost Microsoft potvrdila, že se jedná o problém produktů Microsoft, které jsou uvedeny v sekci Platí pro.
Řešení
Tento problém je opravený v následujících kumulativních aktualizacích pro SQL Server:
Informace o kumulativních aktualizacích pro SQL Server:
Každá nová kumulativní aktualizace pro SQL Server obsahuje všechny opravy hotfix a všechny opravy zabezpečení, které byly součástí předchozí kumulativní aktualizace. Podívejte se na nejnovější kumulativní aktualizace pro SQL Server:
Alternativní řešení
Tento problém můžete vyřešit pomocí následující metody:
Přesuňte dotaz Inner JOIN do samostatného příkazu a výsledky uložte do dočasné tabulky. Potom spusťte odstraňovací dotaz filtrovaný podle položek v dočasné tabulce. Kromě toho můžete zvýšit prahovou hodnotu nákladů na paralelismus, abyste optimalizátor vynutili serializaci plánu dotazu.
Příklady:
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
DELETE FROM DB.dbo. [Tabulka] WHERE Alias IN (SELECT * FROM #T)
Reference
Podívejte se na informace o terminologii, kterou společnost Microsoft používá k popisování aktualizací softwaru.