簡體   English   中英

SQL 2016始終加密-使用加密和未加密列的聯接操作?

[英]Sql 2016 Always Encrypted - Join operation with Encrypted and Non Encrypted column?

如何在SQL Server 2016中對加密和非加密列執行聯接操作。即時消息使用.net Framework 4.6.1。 連接字符串中的列加密設置=啟用。

代碼:

cmd = new SqlCommand("select determin.name as name from determin inner join determinjoin on determin.name = determinjoin.name ", con); 

錯誤:

    The data types varchar(20) encrypted with (encryption_type = 
'DETERMINISTIC', encryption_algorithm_name = 
'AEAD_AES_256_CBC_HMAC_SHA_256', column_encryption_key_name = 'CEK_Auto4', 
column_encryption_key_database_name = 'depdb') collation_name = 
'Latin1_General_BIN2' and varchar are incompatible in the equal to operator.

照原樣,您不能。 查詢處理器無權訪問要為聯接解密的密鑰。 如果您確實必須將兩個表連接在一起,則應該使用確定性加密來對兩個列進行加密。

也就是說,您可能仍然不想這樣做。 對於超過幾百萬行的任何情況,性能都會從壞到糟糕。 如果確實必須並且沒有修改模式的選項,請測試並查看用戶在看到其性能后是否仍然有相同的感覺。 如果您可以對模式進行一些細微調整,則可以使用一些選項來簡化此操作。 例如,對此類聯接使用一些替代列。 可能是代理密鑰,甚至可能是對安全性不敏感的自然密鑰。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM