Belirtiler
Microsoft SQL Server 2012 veya Microsoft SQL Server 2014 ' de veritabanı yansıtmayı kullanırken, bir onaylama koşuluna, veritabanı ikizleme de askıya alınmış durumuna çıkabilir.
Neden
Bu sorun, yeni bir sayfa ayrılırken SQL Server yeni sayfada bir X kilidi aldığında oluşur. SQL Server, kilit isteğine yeni sayfanın ait olduğu hobt_id (yığın veya B-ağaç KIMLIĞI) koyar. Bununla birlikte, SQL Server hobt_id yansıtma günlüğüne yerleştirebilir ve birincil ve ayna arasında farklı kilit davranışlarıyla sonuçlanır. Bu, şöyle açıklanabilirsiniz:
-
T1, sayfa P1
-
T2 P1, yeni bir sayfa P2, yeni bir sayfa tahsis etmek için, burada bir Burada SQL Server hobt_id yansıtma günlüğüne yerleştirmedi.
-
TX, bir T1 kilidini, P1 'dan P2 'e taşımak için bir kilit geçişi yapar.
-
TX Committed, şimdi T2 Page P2 'i kullanabilir ve T2 sayfa P2 üzerinde başka bir IX Lock kullanıyor.
-
T1 kabul edilmiş, şimdi T2 P2 on on on.
-
Çok fazla eklendikten sonra, birincil tarafta bir kilit ilerletme işlemi gerçekleşir; ancak ayna üzerinde yükseltme işlemi sırasında, T2 sürüm
-
Çok fazla sildikten sonra, sayfa P2 boşın ve serbest hale geldi.
-
T3 yeni bir sayfaya gerek duyar ve P2 tahsis etmek için, bu bir X kilidi gerektirir, ancak yansıtmada 6 adımında bu adım başarısız oldu.
Bu yansıtmada, Kilit bloğunda hobt_id yanlış olduğundan adım 6, IX kilidini yayınlamayın. Bu yanlış hobt_id, adım 2 sırasında ve SQL Server 'ın hobt_id yansıtma günlüğüne yerleştirmediğinden kaynaklanır. Adım 2 ' deki TX çok kısa olduğundan ve bu işlem tamamlandığında yanlış hobt_id olan kilit bloğu serbest bırakılamadığı için genellikle hiçbir sorun görmezsiniz. Bununla birlikte, step3 'da kilitleme geçişi ve aşağıdaki adımları (4 ve 5) nedeniyle, yanlış hobt_id bu kilit bloğu korunur ve son olarak soruna neden olur. Adım 2 ' de doğru bir hobt_id kullandığından birincili Bu soruna sahip değildir. Ancak günlük kaydının doğru hobt_id yok.
Çözüm
Sorun ilk olarak SQL Server 'ın aşağıdaki toplu güncelleştirmesinde giderilmiştir.
SQL Server 2014 için toplu güncelleştirme 1 /en-us/help/2931693
SQL Server 2012 SP1 için toplu güncelleştirme 9 /en-us/help/2931078
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:
Geçici Çözüm
Bu soruna geçici bir çözüm için, yansıtmayı yeniden başlatın ve askıya alınan durumu sonlandırın.
Durum
Microsoft bu sorunun "Uygulandığı öğe" bölümünde listelenen Microsoft ürünlerinde bulunduğunu onaylamıştır.