Aanmelden met Microsoft
Meld u aan of maak een account.
Hallo,
Selecteer een ander account.
U hebt meerdere accounts
Kies het account waarmee u zich wilt aanmelden.

Symptomen

Ga ervan uit dat u een opgeslagen Transact-SQL-procedure hebt, zoals de volgende: een parameter voor de tabelwaardeparameter (TVP) met een beperking als een 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

In een scenario waarbij deze procedure wordt aangeroepen vanuit een opgeslagen procedure van SQLCLR en de beperking voor het argument wordt geschonden, ontvangt u mogelijk een systeem bevestiging van de fout wanneer u verwacht dat het foutbericht ' Beperkingsfout ' wordt weergegeven.

Hierna volgt een voorbeeld van een SQLCLR-procedure die een schending van de beperking oplevert voor de opgeslagen procedure:

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

                     {

                           …;

                     }

              }

       }

}

Oplossing

Dit probleem is opgelost in de volgende cumulatieve updates voor SQL Server:

Cumulatieve update 5 voor SQL Server 2016 RTM

Cumulatieve update 2 voor SQL Server 2016 SP1

Cumulatieve update 4 voor SQL Server 2014 Service Pack 2

Opmerking deze update veroorzaakt een foutbericht waarin de juiste fout ' beperking ' wordt weergegeven.

Elke nieuwe cumulatieve update voor SQL Server bevat alle hotfixes en beveiligingsfixes die zijn opgenomen in de vorige cumulatieve update. Bekijk de nieuwste cumulatieve updates voor SQL Server:

Nieuwste cumulatieve update voor SQL Server 2016

Nieuwste cumulatieve updates voor SQL Server 2014

Status

Microsoft heeft bevestigd dat dit probleem zich kan voordoen in de Microsoft-producten die worden vermeld in de sectie Van toepassing op.

 

Verwijzingen

Informatie over de terminologie die door Microsoft wordt gebruikt om software-updates te beschrijven.

Meer hulp nodig?

Meer opties?

Verken abonnementsvoordelen, blader door trainingscursussen, leer hoe u uw apparaat kunt beveiligen en meer.

Community's helpen u vragen te stellen en te beantwoorden, feedback te geven en te leren van experts met uitgebreide kennis.

Was deze informatie nuttig?

Hoe tevreden bent u met de taalkwaliteit?
Wat heeft uw ervaring beïnvloed?
Als u op Verzenden klikt, wordt uw feedback gebruikt om producten en services van Microsoft te verbeteren. Uw IT-beheerder kan deze gegevens verzamelen. Privacyverklaring.

Hartelijk dank voor uw feedback.

×