SQL Server 2016'da "Saklı yordam hedef tablonun şemasını değiştirdiğinden INSERT EXEC başarısız oluyor" hatası
Bu makale, Sorgu Veri Deposu özelliğini kullanan bir veritabanındaki saklı yordam düzenli aralıklarla başarısız olduğundan oluşan bir sorunu geçici olarak çözmenize yardımcı olur.
Orijinal ürün sürümü: SQL Server 2016
Özgün KB numarası: 4465511
Belirtiler
Aşağıdaki senaryoyu inceleyin:
Sorgu Veri Deposu özelliğini kullanan bir Microsoft SQL Server 2016 veritabanınız var.
Söz dizimini kullanarak
INSERT...EXEC
başka bir saklı yordama çağrı yapan bir saklı yordamınız var.Sorgu Veri Deposu özelliği, yapılandırılan boyut üst sınırına yükseldikçe otomatik temizlemeyi düzenli aralıklarla çalıştırır. Buna ek olarak, Sorgu Veri Deposu durumu olarak
READ_WRITE
READ_ONLY
değişir.
Bu senaryoda, üst saklı yordam yürütmesi düzenli aralıklarla başarısız olur ve aşağıdakine benzer bir hata iletisi alırsınız:
Msg 556, Düzey 16, State 2, Line LineNumber
Saklı yordam hedef tablonun şemasını değiştirdiğinden INSERT EXEC başarısız oldu.
Neden
Otomatik temizleme işlemi, planı Sorgu Veri Deposu'nun dışına boşaltır. Sorgu Veri Deposu'ndaki plan eksik olduğundan sorgu yeniden derleme işlemiyle karşılaşır. Ancak, plan hala yordam önbelleğinde bulunur. Tasarım gereği, yeniden derleme işlemi gerçekleştiğinde SQL Server alt yordamın yinelenen yürütülmesini önlemek için 556 hatası oluşturur. Böyle bir yinelenen işlem, yanlış sonuçların döndürülmesine neden olabilir.
Çözüm
SQL Server 2016 için Hizmet Paketi bilgileri
Bu sorun, SQL Server için aşağıdaki hizmet paketinde düzeltildi:
SQL Server 2016 için Service Pack 3
SQL Server için hizmet paketleri hakkında:
Hizmet paketleri birikmelidir. Her yeni hizmet paketi, yeni düzeltmelerle birlikte önceki hizmet paketlerindeki tüm düzeltmeleri içerir. Bu hizmet paketi için en son hizmet paketini ve en son toplu güncelleştirmeyi uygulamanızı öneririz. En son hizmet paketini yüklemeden önce önceki bir hizmet paketini yüklemeniz gerekmez. En son hizmet paketi ve en son toplu güncelleştirme hakkında daha fazla bilgi için aşağıdaki makaledeki Tablo 1'e bakın:
SQL Server ve bileşenlerinin sürüm, sürüm ve güncelleştirme düzeyini belirleme
Geçici Çözüm
Bu soruna geçici bir çözüm bulmak için aşağıdaki adımları uygulayın:
Sorgu Veri Deposu'nun boyutunu artırın. Bu, Sorgu Veri Deposu'nun planı temizleme ve işletim moduna girme
READ_ONLY
sıklığını veya olasılığını azaltır.Hata 556'yı yakalamak için kodunuza hata işleme ekleyin ve sorguyu yeniden gönderin
INSERT EXEC
.Sorgu Veri Deposu konumundan
READ_ONLY
duruma döndüğünde yordam önbelleğiniREAD_WRITE
temizleyin.
Ek bilgiler
Microsoft SQL Server 2017'de Sorgu Veri Deposu'nda yapılan değişiklikler nedeniyle bu sorun SQL Server 2017'de oluşmaz. Bu sorun SQL Server 2016'da düzeltilmeyecek.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin