SQL 服务器:始终加密(尝试在加密列中插入值时出现数据类型冲突错误)

SQL Server : Always Encrypted (Datatype clash error whe trying to insert value in an encrypted column)

我创建了一个包含两列 (id, name) 的 table。使用 AlwaysEncrypted 加密 id 列,但现在当我尝试在 id 列中输入值时,它会抛出此错误:

Operand type clash: int is incompatible with int encrypted with (encryption_type = 'DETERMINISTIC', encryption_algorithm_name = 'AEAD_AES_256_CBC_HMAC_SHA_256', column_encryption_key_name = 'CEK_Auto1', column_encryption_key_database_name = 'TEST_PS')

我能做什么?

从错误消息来看,它似乎在尝试将明文插入到列中,但它需要一个加密值。

确保对该列的 INSERT 包含参数(非明文)并且客户端连接字符串包含 "Column Encryption Setting=enabled"。如果您使用的是 SSMS,请确保在您的查询选项中启用 "Parameterization for Always Encrypted",并且在同一行执行变量声明和赋值。有关详细信息,请参阅下面的 link。

https://techcommunity.microsoft.com/t5/azure-sql-database/parameterization-for-always-encrypted-using-ssms-to-insert-into/ba-p/386124