2

我有一个已经运行了很长时间的 Windows 窗体应用程序,现在我必须加密/解密数据库中的某些列。我在我的数据库上进行了所有配置,将我的列配置为加密,将列的数据类型更改为nvarchar(max)from varchar(max),在 Windows 商店创建证书,为客户端导出证书,现在我正在尝试在客户端完成这项工作。

我将 Windows 窗体应用程序框架更改为 4.6,添加Column Encryption Setting=enabled到我的连接字符串,更新了.dbml设计器,但尝试插入值时仍然出现以下错误:

操作数类型冲突:varchar(8000) 使用 (encryption_type = 'DETERMINISTIC', encryption_algorithm_name = 'AEAD_AES_256_CBC_HMAC_SHA_256', column_encryption_key_name = 'CEK_Auto1', column_encryption_key_database_name = 'MCM_V2') collat​​ion_name = 'Greek_CI_AS' 与 varchar(0) 不兼容encryption_type = 'DETERMINISTIC',encryption_algorithm_name = 'AEAD_AES_256_CBC_HMAC_SHA_256',column_encryption_key_name = 'CEK_Auto1',column_encryption_key_database_name = 'mydb') collat​​ion_name = 'Greek_BIN2'

我正在使用 Linq 进行查询

4

1 回答 1

1

You seem to be using non-BIN2 collation. Always Encrypted currently only supports BIN2 collations.

From official documentation:

Always Encrypted is not supported for the columns with the below characteristics (e.g. the Encrypted WITH clause cannot be used in CREATE TABLE/ALTER TABLE for a column, if any of the following conditions apply to the column):
...
String (varchar, char, etc.) columns with non-bin2 collations

于 2017-10-19T18:14:54.773 回答