SSS*_*SSS 6 sql-server t-sql encryption sql-server-2016 always-encrypted
我已在 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) 不兼容)排序规则名称 = 'SQL_Latin1_General_CP1_CI_AS'
我在这里查询简单的插入 TSQL 语句。我需要做出哪些改变才能使其发挥作用?
另外,如果我们想通过应用程序更新或插入加密列,需要对应用程序或应用程序代码进行哪些更改?
您需要使用变量作为值,以便 SSMS 可以根据其正在使用的 API 参数化查询。就像是:
\n\n DECLARE @fname varchar(30) = 'Kula'\nDECLARE @ename varchar(30) = 'Kalle'\nDECLARE @pnr varchar(11) = '752312-4545'\nDECLARE @age tinyint = 45\n\ninsert into dbo.Personer2 (F\xc3\xb6rnamn, Efternamn, Personnummer, \xc3\x85lder) \nVALUES (@fname, @ename, @pnr, @age)\n\nSELECT * FROM Personer2\nRun Code Online (Sandbox Code Playgroud)\n