2017-10-19 46 views
0

我有一个长时间工作的Windows Forms应用程序,现在我必须加密/解密数据库中的某些列。我对数据库进行了所有配置,配置了要加密的列,将列的数据类型从varchar(max)更改为nvarchar(max),在Windows存储上创建了证书,为客户端导出了证书,现在我正在尝试在客户端执行该任务。SQL Server总是在插入时加密排序规则不兼容

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

操作数类型冲突:VARCHAR( (encryption_type ='DETERMINISTIC')加密的varchar(50)不兼容,varchar(50)不兼容(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' encryption_algorithm_name ='AEAD_AES_256_CBC_HMAC_SHA_256',column_encryption_key_name ='CEK_Auto1',column_encryption_key_dat abase_name = 'MYDB')COLLATION_NAME = 'Greek_BIN2'

我使用LINQ进行查询

回答

0

你似乎是使用非BIN2排序规则。始终加密当前仅支持BIN2归类。

official documentation:不支持

总是被加密,用于与下面 特性的列(例如,加密,子句不能在 可以使用CREATE TABLE/ALTER TABLE为一列,如果有的话的以下 条件适用于列):
...
的字符串(VARCHAR,炭等) 列与非BIN2归类