Gejala
Pertimbangkan skenario berikut:
-
Anda memiliki database yang memiliki opsi ALLOW_SNAPSHOT_ISOLATION dan READ_COMMITTED_SNAPSHOT diaktifkan di Microsoft SQL Server 2008 R2.
-
Anda menjalankan pernyataan Select yang berisi petunjuk Tablock dan updlock terhadap tabel dalam database.
-
Pernyataan Select DIBUNGKUS dalam Tran mulaisecara eksplisit, tapi commit Tran tidak dieksekusi.
-
Dua lagi kueri yang sama yang dimulai dengan petunjuk kueri yang sama ada dalam transaksi eksplisit.
Dalam skenario ini, ketika kueri pertama dilakukan, salah satu kueri lainnya akan menjadi kemacetan.
Penyebab
Masalah ini terjadi karena SQL Server melaporkan kemacetan di salah satu skenario berikut ini:
-
Saat ALLOW_SNAPSHOT_ISOLATION dan READ_COMMITTED_SNAPSHOT diaktifkan untuk database, beberapa kueri terhadap transaksi yang sama mungkin dilaporkan sebagai buntu secara tidak benar ketika salah satu dari mereka selesai.
-
Saat ALLOW_SNAPSHOT_ISOTION diaktifkan dan petunjuk yang digunakan Tablock dan Updlock , pernyataan Select kedua dan ketiga mengambil kunci IX dengan maksud untuk dikonversi ke X. Kunci IX berakhir deadlocking ketika upaya untuk mengonversi ke X dibuat.
-
Saat ALLOW_SNAPSHOT_ISOLATION dinonaktifkan, kueri kedua dan ketiga akan mendapatkan enam kunci. Dalam situasi ini, ketika enam kunci dikonversi ke X, itu hanyalah skenario pemblokiran, bukan kemacetan.
Pemecahan Masalah
Masalah ini pertama kali diperbaiki dalam pembaruan kumulatif SQL Server berikut ini. Setelah Anda menerapkan perbaikan terbaru, SQL Server mengatasi masalah tersebut dengan merekam jika Baca petunjuk commit atau petunjuk nolock ditemui untuk database dan kueri. Informasi ini digunakan untuk memilih tipe kunci yang benar untuk menangani situasi dengan benar, dan bukan laporan kemacetan yang tidak tepat.
11 pembaruan kumulatif untuk SQL Server 2008 R2 SP2 /en-us/help/2926028
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:
Status
Microsoft telah mengonfirmasi bahwa ini adalah masalah pada produk Microsoft yang tercantum di bagian "Berlaku untuk".