Prijavite se pomoću Microsofta
Prijavi se ili izradi račun.
Zdravo,
Odaberite drugi račun.
Imate više računa
Odaberite račun putem kojeg se želite prijaviti.

Simptomi

Pretpostavimo da imate spremljenu proceduru Transact-SQL, kao što je sljedeći koji uzima parametar tablice – vrijednost (TVP) koji sadrži ograničenje kao argument:

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

U scenariju u kojem se taj postupak naziva iz spremljene procedure sqlclr i ograničenje je prekršeno za argument, možda ćete neispravno primati sustav, kada biste očekivali da će se pojaviti poruka o pogrešci "ograničenje kršenje".

Slijedi primjer procedure SQLCLR koja stvara kršenje ograničenja za spremljeni postupak:

[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())

                     {

                           …;

                     }

              }

       }

}

Rješenje

Taj je problem riješen u sljedećim kumulativnim ažuriranjima za SQL Server:

Kumulativno ažuriranje 5 za SQL Server 2016 RTM

Kumulativno ažuriranje 2 za SQL Server 2016 SP1

Kumulativno ažuriranje 4 za SQL Server 2014 Service Pack 2

Obavijest o tome stvara se poruka o pogrešci "ograničenje ograničenja" u ovom ažuriranju.

Svako novo Kumulativno ažuriranje za SQL Server sadrži sve hitne popravke i sigurnosne popravke koji su uvršteni u prethodno Kumulativno ažuriranje. Pogledajte najnovija kumulativna ažuriranja za SQL Server:

Najnovije Kumulativno ažuriranje za SQL Server 2016

Najnovija kumulativna ažuriranja za SQL Server 2014

Status

Microsoft je potvrdio da se radi o problemu u Microsoftovim proizvodima navedenim u odjeljku "odnosi se na".

 

Reference

Saznajte više o terminologiji koju Microsoft koristi za opisivanje softverskih ažuriranja.

Potrebna vam je dodatna pomoć?

Želite dodatne mogućnosti?

Istražite pogodnosti pretplate, pregledajte tečajeve za obuku, saznajte kako zaštititi uređaj i još mnogo toga.

Zajednice vam pomažu da postavljate pitanja i odgovarate na njih, pošaljete povratne informacije i čujete se sa stručnjacima s bogatim znanjem.

Jesu li vam ove informacije bile korisne?

Koliko ste zadovoljni jezičnom kvalitetom?
Što je utjecalo na vaše iskustvo?
Ako pritisnete Pošalji, vaše će se povratne informacije iskoristiti za poboljšanje Microsoftovih proizvoda i usluga. Vaš će IT administrator moći prikupiti te podatke. Izjava o zaštiti privatnosti.

Hvala vam na povratnim informacijama!

×