【问题标题】:communication with 2 databases with always encryption through procedure通过过程始终加密与 2 个数据库通信
【发布时间】:2017-05-05 18:21:01
【问题描述】:

目前我正在将我的数据库迁移到始终加密的 SQL Server 2016。我有 2 个数据库,并通过存储过程从另一个表中的一个数据库中选择数据。使用 DB2 中的存储过程从 DB1 选择或更新加密列时,出现操作数类型冲突:错误。 我已经为具有相同名称和相同证书的 2 个数据库创建了列主密钥和列。

use CustDb1

Select  @custSSN = customer 
        from    CustDb2..customer a
        where   a.SSN = @psSSN 

两个数据库中客户中的 SSN 列都已加密,但是当我运行它时出现以下错误:

消息 33277,级别 16,状态 6,过程 copy_customer,第 891 行 [批次 Start Line 167] 列/变量的加密方案不匹配 '@psSSN'。列/变量的加密方案是 (encryption_type = 'DETERMINISTIC', encryption_algorithm_name = 'AEAD_AES_256_CBC_HMAC_SHA_256', column_encryption_key_name = 'TestCEK', column_encryption_key_database_name = 'CustDb2') 和 '940' 行附近的表达式期望它是 (encryption_type = '确定性',加密算法名称 = 'AEAD_AES_256_CBC_HMAC_SHA_256', column_encryption_key_name = 'TestCEK', column_encryption_key_database_name = 'CustDb1')。

【问题讨论】:

    标签: sql-server stored-procedures encryption always-encrypted


    【解决方案1】:

    使用 Always Encrypted 进行数据迁移的最佳实践记录在 here。请按照博客中指定的说明进行数据迁移。

    目前,Always encrypted 不支持对加密数据进行跨数据库比较

    【讨论】:

    • 感谢您的回复 Nikhil。它是一个工作产品,有超过 250 个程序正在使用这种逻辑。在短时间内将所有逻辑转移到 .net 是非常困难的。有没有其他方法可以在 sql server 本身中处理这个问题?
    猜你喜欢
    • 2020-10-06
    • 2012-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-28
    • 2016-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多