Belirtiler
Verileri bir tablodan silmek deneyin ve Microsoft SQL Server 2016 ve 2017 diğer tablolardaki verileri başvuruluyor varsayalım. If sorgu keşfedin yürütme planı görebilirsiniz, bir yabancı anahtar başvuru denetimi işlecini kullanın .Bu durumda, aşağıdaki hata iletisini alabilirsiniz bile olan satır Silinen diğer tablolarda başvurulmuyor:
Msg 547, düzey 16, durum satırı LineNumber 0
DELETE deyimi başvuru kısıtlaması ile çakıştı.
Durum
Microsoft bu sorunun "Uygulandığı öğe" bölümünde listelenen Microsoft ürünlerinde bulunduğunu onaylamıştır.
Çözüm
Bu sorun SQL Server için toplu güncelleştirme aşağıdaki giderilmiştir:
Not: Bu sorun, SQL Server 2016 SP2 için toplu güncelleştirme 6'giderilmiştir.
SQL Server için toplu güncelleştirmeler hakkında:
Her yeni bir toplu güncelleştirme SQL Server için tüm düzeltmeleri içerir ve tüm güvenlik, düzeltmelerini önceki toplu güncelleştirme ile birlikte. SQL Server için en son toplu güncelleştirme denetleyin:
Geçici Çözüm
Bu sorunu çözmek için aşağıdaki yöntemlerden birini kullanın:
-
Bu sorguyu çalıştırmak için Uyumluluk düzey aşağıda 130 kullanın.
-
Başvuru tablosu üzerinde dizin yapısını değiştirebilirsiniz.
Ek Bilgi
Başlangıç veritabanı uyumluluk düzeyi yapılandırma kapsamına 130 SQL Server 2016 içinde bir sorgu yürütme planı yabancı anahtar başvuru kullanabilirsiniz. Bir tablodaki bir satırı diğer herhangi bir satır tarafından başvurulan olmadığını doğrulamak için onay işleç Başvurusal bütünlük kısıtlamaları ile tablolar. Bu tür işleç kullanılabilir bir tablo, çok sayıda yabancı tablolar tarafından başvurulmaktadır. Bu işleci SQL Server bu tür denetimi gerçekleştirmek için başvuru tablosunda dizin seçer. Eğer Başvuru tablosu anahtar birden çok sütun içeren bir dizin olduğu gibi bazı Sütun başına yabancı anahtar, ancak bazı diğer parçası olmayan sütunlar, yabancı anahtar bir parçasıdır. Bu gerçekleştirilen yanlış iade neden olabilir SQL Server tarafından.
Örneğin, aşağıdaki şemada göz önünde bulundurun:
Tablo tpk (pk int kısıtlama oluşturma Clustered birincil anahtar cpk)
Tablo tfk (int, fk int oluşturun kısıtlama cfk yabancı anahtar başvuruları tpk dizin IA clustered(a,fk))
Bu şema değiştirmek, ancak bu soruna neden olabilir sütunların sırasını dizin için IA (fk, bir), olacak değil.
Başvurular
Hakkında bilgi edinin terminolojiMicrosoft yazılım güncelleştirmelerini açıklamak için kullandığı.