Sql server Msg 33299,在WHERE子句中使用始终加密列时为16级

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,

我有一个名为Product的表,其中有一个名为Code varchar(50)的字段

我在这个字段上使用了始终加密的
<代码>插入
和正常的
选择
工作正常

但是,当我试图创建一个存储过程来
选择
字段上的
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

使用确定性加密的列支持
其中
相等比较,以及
不同
加入
分组依据

不能对加密列执行不等、范围或类似查询或任何其他操作

也来看看