问题描述
始终加密/SS 2017 和 ASP Classic。对于那些仍在管理 ASP/VBscript 应用程序的少数人来说,这篇文章让我们了解了我现在所处的位置...... How to read SQL Always-encrypted column from classic ASP
我的 ODBC Driver 17 在我的 ASP 的指示下成功解密了我的 AE 加密列!
但是,到目前为止,我在尝试执行以下操作时遇到了以下错误(显然是相当常见的错误):
Microsoft OLE DB Provider for ODBC Drivers 错误“80040e07” [Microsoft][ODBC Driver 17 for sql Server][sql Server]操作数类型冲突:varchar 与使用 (encryption_type = 'DETERMINISTIC',encryption_algorithm_name = 'AEAD_AES_256_CBC_HMAC_SHA_256',column_encryption_key_name_key_name_key_data_encryption_key_name_加密的 varchar(8000) 不兼容'XXXX_db') collation_name = 'sql_latin1_General_CP1_CI_AS'
在确认 AE 应该通过多种资源支持我的需求后(“使用确定性加密允许相等搜索”),
我认为这与以下内容有关:
-
AE 将加密列的“排序规则”更改为 latin1_General_BIN2...
-
我的加密列“nvarchar(15)”可能在我声明时被解释为 varchar(8000) (15)...
-
一些基本的东西,当我的 ASP 试图呈现原始数据时,用我的驱动程序加密,进行相等比较或插入到加密列......
我在 AE 上花了很多时间,非常感谢任何指导或支持?总之,帮助。
解决方法
好的,谢谢你的帮助!对于那些找到此主题并需要答案的人...以上是 3) 一些基本内容。
确保您传递的是“可变参数”而不是输入值或其他内容。从 A 到 B 的简单修复解决了我的问题。
A) MM_rsUser_cmd.Parameters.Append MM_rsUser_cmd.CreateParameter("param2",200,1,15,Request.Form("pwd"))
乙) PwdVar = Request.Form("pwd") MM_rsUser_cmd.Parameters.Append MM_rsUser_cmd.CreateParameter("param2",PwdVar)