徵狀

假設您有一個 Transact-sql 的儲存程式,如下所示,此程式會採用一個包含 限制 作為引數的資料表值參數(TVP):

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

在從 SQLCLR 存儲程式呼叫此程式的情況下,如果該引數違反該 限制 ,您可能會在收到「限制侵犯」錯誤訊息時,錯誤地接收系統 assert。

下列是針對預存程式產生限制違反之 SQLCLR 程式的範例:

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

                     {

                           …;

                     }

              }

       }

}

解決方案

此問題已在 SQL Server 的下列累積更新中修正:

SQL Server 2016 RTM 的累積更新5

SQL Server 2016 SP1 的累積更新2

SQL Server 2014 的累積更新 4 Service Pack 2

注意 此更新會導致傳回正確的「限制違反」錯誤訊息。

每個新的 SQL Server 累積更新包含前一個累積更新中所包含的所有修復程式和安全性修正程式。 查看 SQL Server 的最新累計更新:

SQL Server 2016 的最新累計更新

SQL Server 2014 的最新累計更新

狀態

Microsoft 已確認本篇文章<適用於>一節所列之 Microsoft 產品確實有上述問題。

 

參考

瞭解 Microsoft 用於描述軟體更新的 術語

需要更多協助?

擴展您的技能
探索訓練
優先取得新功能
加入 Microsoft 測試人員

這項資訊有幫助嗎?

您對翻譯品質的滿意度為何?

會影響您使用體驗的因素為何?

是否還有其他的意見反應? (選填)

感謝您的意見反應!

×