Belirtiler

Bağımsız değişken olarak kısıtlama içeren bir tablo değerli parametre (TVP) Içeren bir Transact-SQL saklı yordamınız olduğunu varsayalım:

create type TestTvpType as table   

(

  id int primary key, -- UNIQUE will also do the trick

  data int

); 

go 

create procedure TestTvpProc @tvp TestTvpType readonly

as

begin

  select * from @tvp;

end;

go

Bu yordamın bir SQLCLR saklı yordamından çağrıldığı ve bağımsız değişken için kısıtlama ihlal edildiği bir senaryoda, "kısıtlama ihlali" hata iletisini almayı umduğunuz zaman bir sistem onayı alabilirsiniz.

Aşağıda, saklı yordam için kısıtlama ihlali üreten bir SQLCLR yordamının örneği verilmiştir:

[SqlProcedure]

public static void ClrProcCallingTsqlProcWithTvpArgument(out int sum)

{

       using (SqlConnection connection = new SqlConnection("context connection=true"))

       {

              sum = 0;

              DataTable myDataTable = new DataTable("TestTvpType");

              myDataTable.Columns.Add("id", typeof(Int32));

              myDataTable.Columns.Add("data", typeof(Int32));

              // Populate the TVP so it will trigger a PRIMARY KEY VIOLATION error

              myDataTable.Rows.Add(1, 1000);

              myDataTable.Rows.Add(1, 2000);

              SqlParameter parameter = new SqlParameter();

              parameter.ParameterName = "@tvp";

              parameter.SqlDbType = System.Data.SqlDbType.Structured;

              parameter.Value = myDataTable;

              SqlCommand command = new SqlCommand("TestTvpProc", connection);

              command.CommandType = CommandType.StoredProcedure;

              command.Parameters.Add(parameter);

              connection.Open();

              using (SqlDataReader reader = command.ExecuteReader())

              {

                     while (reader.Read())

                     {

                           …;

                     }

              }

       }

}

Çözüm

Bu sorun, SQL Server için aşağıdaki toplu güncelleştirmelerde giderilmiştir:

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

Not Bu güncelleştirme, doğru "kısıtlama ihlali" hata iletisinin döndürülmesini sağlar.

Her bir SQL Server toplu güncelleştirmesi, önceki toplu güncelleştirmede bulunan tüm düzeltmeleri ve güvenlik düzeltmelerini içerir. En son SQL Server güncelleştirmelerini gözden geçirin:

En son SQL Server 2016 toplu güncelleştirmesi

En son SQL Server 2014

Durum

Microsoft bu sorunun "Uygulandığı öğe" bölümünde listelenen Microsoft ürünlerinde bulunduğunu onaylamıştır.

 

Başvurular

Microsoft 'un yazılım güncelleştirmelerini açıklamak için kullandığı terminoloji hakkında bilgi edinin.

Daha fazla yardıma mı ihtiyacınız var?

Yeteneklerinizi geliştirin
Eğitimleri keşfedin
Yeni özellikleri ilk olarak siz edinin
Microsoft Insider 'a katılın

Bu bilgi yardımcı oldu mu?

Çeviri kalitesinden ne kadar memnunsunuz?
Deneyiminizi ne etkiledi?

Geri bildiriminiz için teşekkür ederiz!

×