DBAtlas · Veritabanı operasyon atlası

3961: Snapshot isolation transaction failed because the object was modified by a DDL statement

SQL Server

Ne demek?

Snapshot yalıtım düzeyinde çalışan transaction, eriştiği nesnenin başka bir eşzamanlı transaction'daki bir DDL komutuyla (şema değişikliği) değiştirilmesi nedeniyle başarısız oldu. Meta veri sürümlenmediği için snapshot transaction'ı bu durumda devam edemez.

Neden olur?

SNAPSHOT yalıtım düzeyinde (SET TRANSACTION ISOLATION LEVEL SNAPSHOT) başlamış bir transaction sürerken, başka bir oturumun eriştiği tabloda ALTER TABLE/CREATE INDEX gibi DDL çalıştırması. Snapshot transaction'ları veri sürümlerini görebilir ama şema sürümlerini göremez. READ COMMITTED SNAPSHOT (RCSI) altında bu hata oluşmaz; RCSI her ifade için yeni bir snapshot alır.

Nasıl çözülür?

İşlemi yeniden deneyin; DDL tamamlandıktan sonra genellikle başarılı olur. Kalıcı çözüm için şema değişikliklerini (DDL) yoğun snapshot iş yükünün olmadığı bakım pencerelerinde yapın. Uygulamada bu hatayı yakalayıp otomatik yeniden deneme (retry) mantığı uygulayın. Uzun süren snapshot işlemlerini kısaltın.

DBAtlas'ta aç →

Aynı motorda diğer kayıtlar