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

本文关键字:定义 类型参数 用户 加密 | 更新日期: 2023-09-27 18:26:30

我正在将一个用户定义表类型(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"必须具有有效的类型名称。

有什么想法吗?

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

Always Encrypted不支持TVP。当您使用启用"列加密设置"时,您根本无法使用TVP。

目前,我们在任何受支持的驱动程序(.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/其提出了一种变通方法。