Gejala
Pertimbangkan skenario berikut:
- Anda memiliki tabel Filestream yang sangat besar.
- Anda menjalankan kueri penghapusan baris dalam tabel Filestream yang membuat paket kueri yang mahal, seperti kueri yang difilter oleh gabungan dalam ke tabel besar lain dalam sistem.
- Pengoptimal kueri memilih rencana eksekusi paralel.
Dalam skenario ini, penegasan akan terjadi, dan Anda mungkin menerima pesan kesalahan yang menyerupai berikut ini dalam log kesalahan SQL Server:
DateTimespidNumber Error: 5553, Keparahan: 20, State: 6.
SpidSpidNumber DateTime SQL Server kesalahan internal. Manajer FILESTREAM tidak dapat melanjutkan dengan perintah saat ini.
Status
Microsoft telah mengonfirmasi bahwa ini adalah masalah dalam produk Microsoft sebagaimana tercantum di bagian "Berlaku untuk".
Resolusi
Masalah ini telah diperbaiki dalam pembaruan kumulatif berikut untuk SQL Server:
Tentang pembaruan kumulatif untuk SQL Server:
Setiap pembaruan kumulatif baru untuk SQL Server berisi semua hotfix dan semua perbaikan keamanan yang disertakan dengan pembaruan kumulatif sebelumnya. Lihat pembaruan kumulatif terbaru untuk SQL Server:
Solusi
Untuk mengatasi masalah ini, Anda bisa menggunakan metode berikut ini:
Pindahkan kueri gabungan dalam ke pernyataan terpisah dan simpan hasilnya ke tabel sementara. Lalu jalankan kueri penghapusan yang difilter oleh entri dalam tabel sementara. Selain itu, Anda bisa meningkatkan ambang biaya untuk paralelisme untuk memaksa pengoptimal membuat serialisasi rencana kueri.
Misalnya:
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
HAPUS DARI DB.dbo. [Tabel] WHERE Alias IN (SELECT * FROM #T)
Referensi
Pelajari tentang terminologi yang digunakan Microsoft untuk menjelaskan pembaruan perangkat lunak.