我在尝试针对SQL Server 2016 Always Encrypted列测试遗留经典ASP应用程序时遇到了问题。
这是ASP代码的示例:
conn.ConnectionString = "Driver={ODBC Driver 13 for SQL Server};Server {myserver};UID=myuser;pwd=mypw;Database=test;ColumnEncryption=Enabled;"
conn.open
Dim sql
sql = "SELECT TOP 10 [text] FROM TEST"
rs.open sql, conn
“text”列已加密。执行时,我收到此错误:
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Certificate in key
path 'CurrentUser/My/704F32193389CACD95E102DA881006F33936C6DE' not found.
我已经检查了证书商店,它就在那里:
如果我将驱动程序版本切换为11,我会收到type mismatch
错误,我认为这是因为v11不支持Always Encrypted,所以只是忽略它。
非常感谢任何帮助!
答案 0 :(得分:1)
管理以对其进行排序。原来问题是权限相关。
转到证书 - 本地计算机\个人\证书。右键单击证书,单击“管理私钥”。完全访问“每个人”。
这修复了它,虽然显然在生产中你应该授予对IIS AppPool用户的访问权限,而不是“所有人”。