Belirtiler
Bağımsız değişken olarak kısıtlaması olan tablo değerli bir parametreyi (TVP) alan aşağıdaki gibi bir Transact-SQL saklı yordamınız olduğunu varsayalım:
create type TestTvpType as table
(
id int birincil anahtar, -- BENZERSİZ de işinizi görecektir
data int
);
Git
oluşturma yordamı TestTvpProc @tvp TestTvpType salt okunur
olarak
başla
select * from @tvp;
sonu;
Git
Bu yordamın bir SQLCLR saklı yordamından çağrıldığı ve bağımsız değişkende kısıtlamanın ihlal edildiği bir senaryoda, "kısıtlama ihlali" hata iletisi almayı bekleyebilirsiniz.
Aşağıda, depolanmış yordam için kısıtlama ihlali oluşturan bir SQLCLR yordamı örneği verilmiştir:
[SqlProcedure]
public static void ClrProcCallingTsqlProcWithTvpArgument(out int sum)
{
using (SqlConnection connection = new SqlConnection("context connection=true"))
{
toplam = 0;
DataTable myDataTable = new DataTable("TestTvpType");
myDataTable.Columns.Add("id", typeof(Int32));
myDataTable.Columns.Add("data", typeof(Int32));
TVP'yi BİRİNCİL ANAHTAR İHLALİ hatasını tetikleyecek şekilde doldurun
myDataTable.Rows.Add(1, 1000);
myDataTable.Rows.Add(1, 2000);
SqlParameter parametresi = new SqlParameter();
parametresini kullanın. ParameterName = "@tvp";
parametresini kullanın. SqlDbType = System.Data.SqlDbType.Structured;
parametresini kullanın. Value = myDataTable;
SqlCommand command = new SqlCommand("TestTvpProc", bağlantı);
komutuna basın. CommandType = CommandType.StoredProcedure;
komutuna basın. Parameters.Add(parametre);
bağlantısına tıklayın. Open();
kullanarak (SqlDataReader reader = komut. ExecuteReader())
{
while (okuyucu. Oku())
{
…;
}
}
}
}
Çözüm
Bu sorun, SQL ServerSQL Server için aşağıdaki toplu güncelleştirmelerde düzeltildi:
SQL Server 2016 RTM için Toplu Güncelleştirme 5
SQL Server 2016 SP1 için Toplu Güncelleştirme 2
SQL Server 2014 Service Pack 2 için Toplu Güncelleştirme 4
Notlar Bu güncelleştirme doğru "kısıtlama ihlali" hata iletisinin döndürülmesine neden olur.
SQL Server toplu güncelleştirmeleri hakkında
Her yeni toplu güncelleştirme SQL ServerSQL Server, önceki toplu güncelleştirmede yer alan tüm düzeltmeleri ve güvenlik düzeltmelerini içerir. SQL Server için en son toplu güncelleştirmelere göz atın:
SQL Server 2016 için en son toplu güncelleştirme
En son toplu güncelleştirmeler SQL ServerSQL Server 2014
Durum
Microsoft bunun, "Şunlar için geçerlidir" bölümünde listelenen Microsoft ürünlerinde sorun olduğunu doğrulamıştır.
Başvurular
Microsoft'un yazılım güncelleştirmelerini tanımlamak için kullandığı terminoloji hakkında bilgi edinin.