You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在VBA中配置OLEDB连接字符串读取SQL Server始终加密列?

问题:VBA ADO读取SQL Server Always Encrypted列未解密

Access前端通过ODBC链接表、SSMS查询均能正常读取Always Encrypted列的明文,但使用MSOLEDBSQL19驱动的VBA ADO代码读取时,返回的始终是加密后的乱码值。

解决步骤

1. 必须在连接字符串中启用列加密设置

Always Encrypted需要客户端驱动显式开启解密支持,你的连接字符串缺少关键参数Column Encryption Setting=Enabled,这是导致解密失败的核心原因。

修改后的连接字符串示例:

Provider=MSOLEDBSQL19;SERVER=<ServerName>;DATABASE=<DatabaseName>;Use Encryption for Data=True;Trust Server Certificate=True;Column Encryption Setting=Enabled;

如果使用SQL Server身份验证,完整连接字符串:

Provider=MSOLEDBSQL19;SERVER=<ServerName>;DATABASE=<DatabaseName>;UID=<UserName>;PWD=<Password>;Use Encryption for Data=True;Trust Server Certificate=True;Column Encryption Setting=Enabled;

2. 确认驱动版本与证书权限

  • 确保安装的是最新版MSOLEDBSQL19驱动,旧版本对Always Encrypted的客户端解密支持存在缺陷
  • 运行VBA的Windows用户必须能访问列主密钥对应的证书:SSMS和ODBC能正常解密说明证书已在当前用户的证书存储中,但需确认VBA运行上下文与两者一致(比如是否以同一用户启动Access)

3. 简化ADO执行逻辑

避免可能干扰解密的复杂命令配置,直接通过Connection对象执行查询:

修改后的VBA代码示例:

Public Function Test(strUserName As String, strPassword As String)
    Dim objADOConnection As Object
    Dim rst As Object
    Dim strSQL As String
    Dim strSQLConnectionString As String

    ' 配置带列加密的连接字符串
    strSQLConnectionString = "Provider=MSOLEDBSQL19;SERVER=<ServerName>;DATABASE=<DatabaseName>;" _
        & "Use Encryption for Data=True;Trust Server Certificate=True;" _
        & "Column Encryption Setting=Enabled;"

    Set objADOConnection = CreateObject("ADODB.Connection")
    objADOConnection.Open strSQLConnectionString, strUserName, strPassword

    ' 直接通过连接执行查询
    strSQL = "select MedicareNo FROM General.Client where ClientID = 8;"
    Set rst = objADOConnection.Execute(strSQL)

    If Not rst.EOF Then
        Debug.Print rst(0)
    End If

    rst.Close
    objADOConnection.Close
    Set rst = Nothing
    Set objADOConnection = Nothing
End Function

4. 移除干扰性兼容参数

不要添加DataTypeCompatibility=80,该参数用于兼容旧版Access数据类型,会破坏驱动对Always Encrypted加密列的数据类型映射,导致解密失败。


内容的提问来源于stack exchange,提问作者Scott

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 05:17:21