在 WHERE 子句中使用 Always Encrypted 列时出现消息 33299,级别 16
Msg 33299, Level 16 when using Always Encrypted Column in WHERE Clause
我有一个名为 table 的产品,它有一个名为 Code varchar(50) 的字段。
我在这个字段上使用了 Always Encrypted
。 Insert
和正常 select
工作正常。
但是,当我尝试使用 Code
字段上的 WHERE
子句为 select
创建一个存储过程时,它显示错误并且不允许我创建该过程。我的程序代码如下:
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, Level 16, State 2, Procedure GetProductByCode, Line 11 [Batch Start Line 0]
Encryption scheme mismatch for columns/variables '@productCode', 'Code'. The encryption scheme for the columns/variables is (encryption_type = 'RANDOMIZED', encryption_algorithm_name = 'AEAD_AES_256_CBC_HMAC_SHA_256', column_encryption_key_name = 'CEK_Auto2', column_encryption_key_database_name = 'xxxx') and the expression near line '11' expects it to be (encryption_type = 'DETERMINISTIC') (or weaker).
为什么不允许我创建程序?
我尝试在连接中设置 Column Encryption Setting=Enabled。
已选中启用始终加密的参数化。
我有一个名为 table 的产品,它有一个名为 Code varchar(50) 的字段。
我在这个字段上使用了 Always Encrypted
。 Insert
和正常 select
工作正常。
但是,当我尝试使用 Code
字段上的 WHERE
子句为 select
创建一个存储过程时,它显示错误并且不允许我创建该过程。我的程序代码如下:
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, Level 16, State 2, Procedure GetProductByCode, Line 11 [Batch Start Line 0] Encryption scheme mismatch for columns/variables '@productCode', 'Code'. The encryption scheme for the columns/variables is (encryption_type = 'RANDOMIZED', encryption_algorithm_name = 'AEAD_AES_256_CBC_HMAC_SHA_256', column_encryption_key_name = 'CEK_Auto2', column_encryption_key_database_name = 'xxxx') and the expression near line '11' expects it to be (encryption_type = 'DETERMINISTIC') (or weaker).
为什么不允许我创建程序?
我尝试在连接中设置 Column Encryption Setting=Enabled。
已选中启用始终加密的参数化。