Sql-Server

始終加密:如何插入或更新加密列?

  • June 28, 2018

我已經在我的 SQL Server 數據庫表的一列上配置了“始終加密”。通過“列加密設置=啟用”選項後,我可以從客戶端 SSMS 中選擇和查看數據。

但是當我嘗試將數據插入表中時,會出現以下錯誤:

消息 206,級別 16,狀態 2,第 1 行操作數類型沖突:varchar 與使用 (encryption_type = ‘RANDOMIZED’,encryption_algorithm_name = ‘AEAD_AES_256_CBC_HMAC_SHA_256’,column_encryption_key_name = ‘CEK_Auto1’,column_encryption_key_database_name = ‘TEST’) 加密的 varchar(8000) 不兼容collat​​ion_name = ‘SQL_Latin1_General_CP1_CI_AS’

我在這裡查詢簡單的插入 TSQL 語句。我需要進行哪些更改才能使其正常工作?

另外,如果我們想通過應用程序更新或插入加密列,需要對應用程序或應用程式碼進行哪些更改?

您需要為值使用變數,以便 SSMS 可以根據它使用的 API 參數化查詢。就像是:

   DECLARE @fname varchar(30) = 'Kula'
DECLARE @ename varchar(30) = 'Kalle'
DECLARE @pnr varchar(11) = '752312-4545'
DECLARE @age tinyint = 45

insert into dbo.Personer2 (Förnamn, Efternamn, Personnummer, Ålder) 
VALUES (@fname, @ename, @pnr, @age)

SELECT * FROM Personer2

引用自:https://dba.stackexchange.com/questions/210812