Simptome
Luați în considerare următorul scenariu:
-
Aveți un tabel FILESTREAM foarte mare.
-
Aveți o interogare de ștergere a rândurilor din tabelul FILESTREAM care creează un plan de interogare costisitor, cum ar fi unul filtrat de o asociere internă la alt tabel mare din sistem.
-
Optimizatorul de interogare alege un plan de execuție paralel.
În acest scenariu,va apărea o ssertion și este posibil să primiți mesaje de eroare care seamănă cu următoarele în Jurnalul de erori SQL Server:
Eroare DateTime SPID SpidNumber : 5553, severitate: 20, stare: 6.
Eroare internă DateTime SPID SpidNumber SQL Server. FILESTREAM Manager nu poate continua cu comanda curentă.
Stare
Microsoft a confirmat că aceasta este o problemă în produsele Microsoft enumerate în secțiunea „Se aplică la”.
Rezolvare
Problema este remediată în următoarele actualizări cumulative pentru SQL Server:
Despre actualizările cumulative pentru SQL Server:
Fiecare nouă actualizare cumulativă pentru SQL Server conține toate remedieri rapide și toate remedierile de securitate care au fost incluse în versiunea anterioară actualizare cumulativă. Consultați cele mai recente actualizări cumulative pentru SQL Server:
Soluție de evitare
To rezolvați această problemă,puteți utiliza următoarea metodă:
Mutați interogarea internă asociere la o instrucțiune separată și salvați rezultatele într-un tabel temporar. Apoi, rulează interogarea de ștergere care este filtrată după intrările din tabelul temporar. În plus, puteți mări pragul de cost pentru paralelism pentru a forța Optimizatorul să serializeze planul de interogare.
De exemplu:
Selectați RefTable. alias în #T din DB. dbo. OuterTable INNER JOIN DB. dbo. RefTable pe RefTable. alias = OuterTable. alias
Unde OuterTable. alias > 30006 și OuterTable. alias < 30010
Ștergere din DB. dbo. Masă Unde alias IN (selectați * de la #T)
Referințe
Aflați mai multe despre terminologia care Microsoft utilizează pentru a descrie actualizările de software.