Sql server Msg 33299,在WHERE子句中使用始终加密列时为16级
我有一个名为Product的表,其中有一个名为Code varchar(50)的字段 我在这个字段上使用了始终加密的Sql server Msg 33299,在WHERE子句中使用始终加密列时为16级,sql-server,stored-procedures,always-encrypted,Sql Server,Stored Procedures,Always Encrypted,我有一个名为Product的表,其中有一个名为Code varchar(50)的字段 我在这个字段上使用了始终加密的插入和正常的选择工作正常 但是,当我试图创建一个存储过程来选择字段上的WHERE子句时,它显示了一个错误,不允许我创建该过程。我的程序代码如下: CREATE PROCEDURE [dbo].[GetProductByCode] @productCode VARCHAR (50) AS BEGIN SET NOCOUNT ON; SELECT id,
<代码>插入
和正常的选择
工作正常
但是,当我试图创建一个存储过程来选择字段上的WHERE
子句时,它显示了一个错误,不允许我创建该过程。我的程序代码如下:
CREATE PROCEDURE [dbo].[GetProductByCode]
@productCode VARCHAR (50)
AS
BEGIN
SET NOCOUNT ON;
SELECT id,
[Name],
Code,
Price
FROM Product
WHERE Code = @productCode;
END
它显示的错误如下所示:
Msg 33299,16级,状态2,程序GetProductByCode,第11行[批处理起始行0]
列/变量“@productCode”、“Code”的加密方案不匹配。列/变量的加密方案为(加密类型='RANDOMIZED',加密算法\名称='AEAD\ U AES\ U 256\ CBC\ U HMAC\ U SHA\ U 256',列加密\密钥\名称='CEK\ U Auto2',列加密\密钥\数据库\名称='xxxx'),第'11'行附近的表达式预期为(加密\类型='DETERMINISTIC')(或较弱)
为什么它不允许我创建程序
我尝试在连接中设置Column Encryption setting=Enabled
选中“始终加密”时启用参数化。请参阅此项
处的子句中不支持使用随机加密的列
全部
在这种情况下,code
列具有随机加密。
此加密类型应仅用于仅用于显示而不用于查询的列
因此,如果要使用列code
进行查询,请将其加密类型更改为Deterministic
使用确定性加密的列支持其中
相等比较,以及不同
、加入
和分组依据
不能对加密列执行不等、范围或类似查询或任何其他操作
也来看看