具有始终加密的用户定义表类型参数

时间:2015-12-11 16:50:07

标签: c# sql-server sql-server-2016 always-encrypted

我将一个用户定义的表类型(idlist)的SQL参数传递给存储过程 - 一直运行良好,直到我将Column Encryption Setting=Enabled;添加到web.config以使应用程序与SQL一起工作始终加密功能。

var paramFilterFacilityList = new SqlParameter();
paramFilterFacilityList.ParameterName = "@f";
paramFilterFacilityList.TypeName = "dbo.idlist";
paramFilterFacilityList.Value = fValue;
paramFilterFacilityList.SqlDbType = SqlDbType.Structured;

提出的例外是:

  

表类型参数“@f”必须具有有效的类型名称。

关于可能会发生什么的任何想法?

2 个答案:

答案 0 :(得分:1)

始终加密不支持TVP。当您使用“Column Encryptin Setting”启用时,您根本无法使用TVP。

答案 1 :(得分:0)

目前我们在任何支持的驱动程序(.NET / ODBC / JDBC)中都没有内置的TVP支持和Always Encrypted。请查看https://blogs.msdn.microsoft.com/sqlcat/2016/08/09/using-table-valued-parameters-with-always-encrypted-in-sql-server-2016-and-azure-sql-database/上提出解决方法的博文。