現在、DB を常に暗号化して SQL Server 2016 に移行する作業を行っています。2 つのデータベースがあり、ストアド プロシージャを使用して他のテーブルの 1 つの DB からデータを選択しています。DB2 でストアド プロシージャを使用して DB1 から暗号化された列を選択または更新すると、オペランド型の衝突: エラーが発生しました。同じ名前と同じ証明書を持つ 2 つのデータベースの列マスター キーと列を作成しました。
use CustDb1
Select @custSSN = customer
from CustDb2..customer a
where a.SSN = @psSSN
両方の DB の顧客の SSN 列は暗号化されていますが、これを実行すると以下のエラーが発生しました。
メッセージ 33277、レベル 16、状態 6、手順 copy_customer、行 891 [バッチ開始行 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 = ' DETERMINISTIC'、encryption_algorithm_name = 'AEAD_AES_256_CBC_HMAC_SHA_256'、column_encryption_key_name = 'TestCEK'、column_encryption_key_database_name = 'CustDb1')。