1

我在尝试针对 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

“文本”列已加密。当它执行时,我得到这个错误:

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,所以忽略它。

任何帮助都感激不尽!

4

1 回答 1

1

设法对其进行排序。原来问题与权限有关。

转到证书 - 本地计算机 \ 个人 \ 证书。右键单击证书,单击“管理私钥”。授予“所有人”的完全访问权限。

这修复了它,尽管显然在生产中您应该授予 IIS AppPool 用户访问权限,而不是“所有人”。

于 2018-03-06T22:01:26.290 回答