KB4517771 - PERBAIKI: Sesi CLR yatim piatu menyebabkan pemblokiran di SQL Server

Berlaku Untuk
SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2017 Developer on Windows SQL Server 2017 Enterprise Core on Windows SQL Server 2017 Enterprise on Windows SQL Server 2017 Standard on Windows SQL Server 2019 on Windows

Gejala

Asumsikan bahwa Anda menggunakan sesi yang memanggil prosedur tersimpan runtime bahasa umum (CLR) ("sesi panggilan") untuk mengakses data di Microsoft SQL Server, dan prosedur tersebut pada gilirannya membuat koneksi terpisah ("sesi kedua") ke server yang sama, bukan Koneksi Konteks. Kemudian, jika sesi panggilan dihentikan karena waktu habis atau pembatalan, sesi kedua mungkin menjadi yatim piatu, dan akan ada di dalam sistem hingga dihentikan secara manual dengan menggunakan perintah KILL . Jika sesi yatim piatu tersebut menahan kunci, sesi lain mungkin diblokir sambil menunggu kunci dilepaskan.

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

catatan Secara default, perbaikan dinonaktifkan karena kebutuhan untuk mempertahankan perilaku warisan utas CLR di SQL Server. Anda hanya perlu mengaktifkannya jika sistem Anda menunjukkan gejala yang disebutkan sebelumnya. Untuk mengaktifkan perbaikan, Anda perlu menambahkan bendera pelacakan 6559 ke server dengan menggunakan Opsi Pengaktifan Layanan Mesin Database. Ingat bahwa bendera pelacakan ini hanya dapat digunakan bersama dengan opsi pengaktifan SQL Server. Ini tidak dapat diatur menggunakan perintah DBCC TRACEON .

Referensi

Pelajari tentang terminologi yang digunakan Microsoft untuk menjelaskan pembaruan perangkat lunak.