Belirtiler
Aşağıdaki senaryoyu inceleyin:
-
ALLOW_SNAPSHOT_ISOLATION ve READ_COMMITTED_SNAPSHOT SEÇENEKLERININ etkinleştirildiği bir Microsoft SQL Server 2012 veritabanınız var.
-
Aynı tabloda çalışan en az üç eşzamanlı sorgu vardır.
-
Sorgular (tablock, updlock) sorgu ipucunu kullanır.
-
Her sorgu açık BEGIN TRAN deyiminde paketlenir, ancak COMMIT Tran deyimi yürütülmez.
Bu senaryoda ilk sorgu tamamlandığında, diğer sorgulardan biri kilitlenecektir. READ_COMMITTED_SNAPSHOT , tablock ve UPDLOCK sorgu IPUÇLARıYLA birlikte etkinleştirildiğinde, oturumlar tabloda IX olur. İki eşzamanlı oturum aynı anda iki eşzamanlı oturum X kilitlere dönüştürmeyi denlerse kilitlenme gerçekleşir. READ_COMMITTED_SNAPSHOT devre dışı bırakılırsa, oturumlar X kilitlenmeyle dönüştürüldüğünde kilitlenmeyecektir. Düzeltme, tablock ve updlock ipuçlarıyla READ_COMMITTED_SNAPSHOT kullanıldığında IX kilit yerine LCK_M_SCH_S kilitler vererek bu davranışı giderir.NotBu sorun Microsoft SQL Server 2008 R2'de da oluşur. SQL Server 2008 R2 için bir düzeltme yakında yayımlanacaktır.
Çözüm
Sorun ilk olarak SQL Server 'ın aşağıdaki toplu güncelleştirmesinde giderilmiştir.
SQL Server 2012 SP1 için toplu güncelleştirme 8 /en-us/help/2917531
Her bir SQL Server toplu güncelleştirmesi, önceki toplu güncelleştirmeyle birlikte gelen tüm düzeltmeleri ve tüm güvenlik düzeltmelerini içerir. En son SQL Server güncelleştirmelerini gözden geçirin:
Durum
Microsoft bu sorunun "Uygulandığı öğe" bölümünde listelenen Microsoft ürünlerinde bulunduğunu onaylamıştır.