Belirli sorgularda NOLOCK
bulunan bazı büyük işler için bazen "Veri hareketi nedeniyle taramaya devam edilemedi" mesajı alıyorum WITH (NOLOCK)
.
Bunun, verilerin artık olması gerektiği yerde olmamasına neden olan bir sayfa bölünmesi olduğunda veri seçmeye çalışmakla ilgili bir şey olduğunu anlıyorum - ortamımda olan şeyin bu olduğunu varsayıyorum.
Bunu nasıl çoğaltırım?
Hatayı yakalamak ve bu olduğunda yeniden denemek için kısa vadeli bir geçici çözüm yapmaya çalışıyorum, ancak yeniden üretemiyorsanız test edemiyorum. Buna neden olmanın makul bir yolu var mı?
Bu olduğunda, sorguyu yeniden yürütmek başarı ile sonuçlanır - bu yüzden gerçek veri veya veritabanının kalıcı olarak bozulmasından endişe etmiyorum. Sorgudaki bazı tablolar (dizinleriyle birlikte) sık sık düşüyor, yeniden oluşturuluyor ve yeniden dolduruluyor, bu yüzden bununla ilgili bir şey olduğunu varsayıyorum.
Kaldırmak NOLOCK
benim uzun vadeli sorunum. Bunun ilk nedeni NOLOCK
, sorgular o kadar kötü ki, günlük işlemlerle tıkanmış olmalarıydı, bu yüzden NOLOCK
(işe yarayan) kilitlenmeleri durdurmak için bir yara bandı oldu. Bu yüzden kalıcı bir çözüm bulana kadar bir yara bandında yara yardımına ihtiyacım var.
Bir Merhaba Dünya ile yeniden üretebilseydim, grup yardımını muhtemelen bir saatten kısa bir sürede işe atmayı planlıyordum. Arama ve değiştirme kaldırılamıyor NOLOCK
, çünkü uygulama kilitlenmelerini tekrar almaya başladım, bu da benim için ara sıra başarısız olan bir işten daha kötü.
Okunmuş anlık görüntü yalıtımı kullanmak iyi bir olasılıktır - bunun hakkında daha fazla bilgi almak için veritabanı ekibimizle çalışmam gerekecek. Sorunumuzun bir kısmı, bu tür bir şeyle başa çıkmak için bir SQL Server uzmanına sahip olmamamız ve yalıtım düzeylerini şu anda bu değişikliği yapacak kadar iyi anlamıyorum.
DEADLOCK_PRIORITY
için LOW
uygulamalar kilitlenmeleri varsa, işler başarısız olur, böylece işlerinde değil,. Bundan sonra, kilitlenmeleri araştırabilir ve neden olduklarını öğrenebilir ve bu sorunu çözebilirsiniz. İki ifadenin sırasını değiştirmek gibi çok basit bir düzeltme olabilir. Ne olursa olsun bir sorun, NOLOCK
bir çözüm olmadığını durdurma o kolay sırf olmaya zorlamak için çalışıyor, bu yüzden.
NOLOCK
Bu işlerden basitçe çıkarmayı düşündünüz mü ? Bu sorguların sonuçlarının doğru olması gerekiyorsa , endişeleriniz en az 601 olmalıdır . Paul White, burada mümkün olmaması gereken verileri okumak için özellikle korkunç bir örnek gösteriyor .