【问题标题】:SQL Server Always encrypt collation incompatibility on insertSQL Server 在插入时始终加密排序规则不兼容
【发布时间】:2017-10-19 16:46:38
【问题描述】:

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

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

操作数类型冲突:使用 (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(8000) 与 varchar 不兼容用 (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 进行查询

【问题讨论】:

    标签: c# sql-server linq always-encrypted


    【解决方案1】:

    您似乎使用的是非 BIN2 排序规则。 Always Encrypted 当前仅支持 BIN2 排序规则。

    来自official documentation

    具有以下内容的列不支持始终加密 特征(例如,加密的 WITH 子句不能用于 为列创建 TABLE/ALTER TABLE,如果有以下任何一项 条件适用于列):
    ...
    字符串(varchar、char 等) 具有非 bin2 排序规则的列

    【讨论】:

    • 非常感谢 - 这就是我的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-27
    • 1970-01-01
    • 2011-05-05
    • 2021-09-10
    • 1970-01-01
    相关资源
    最近更新 更多