Son zamanlarda ASP.NET uygulamalarımızdan biri bir veritabanı kilitlenme hatası gösterdi ve hatayı kontrol edip düzeltmem istendi. Kilitlenmenin nedenini bir imleç içindeki tabloyu titizlikle güncelleyen saklı bir prosedür olduğunu bulmayı başardım.
Bu hatayı ilk defa görüyorum ve etkili bir şekilde nasıl izleyeceğinizi ve düzelteceğimi bilmiyordum. Bildiğim tüm yolları denedim ve nihayet güncellenmekte olan tablonun birincil anahtarının olmadığını buldum! Neyse ki bir kimlik sütunu idi.
Daha sonra dağıtım için veritabanı komut dosyası geliştirici dağılmış buldum. Birincil anahtar ekledim ve sorun çözüldü.
Mutlu hissettim ve projeme geri döndüm ve bu çıkmazın nedenini bulmak için biraz araştırma yaptım ...
Görünüşe göre, kilitlenmeye neden olan dairesel bir bekleme durumuydu. Güncelleştirmeler, bir birincil anahtar olmadan, birincil anahtardan daha uzun sürüyor.
Bunun iyi tanımlanmış bir sonuç olmadığını biliyorum, bu yüzden burada gönderiyorum ...
- Eksik ana anahtar sorun mu?
- Karşılıklı çıkmaza neden olan başka koşullar var mı (karşılıklı dışlanma, beklet ve bekle, ön hazırlık ve döngüsel beklemeden)?
- Kilitlenmeleri nasıl önler ve izlerim?