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

通过VBA连接SQL Server报错3706提示Provider cannot be found问题咨询

报错核心原因及解决方案

1 直接触发原因

你当前连接字符串使用的SQLNCLI10对应SQL Server Native Client 10.0,是SQL Server 2008/2008 R2版本附带的专属驱动,当前64位运行环境没有正确安装对应版本、对应位数的该驱动,就会触发这个报错。

2 常见排查方向

  • 确认Excel的实际位数:即使系统是64位,大部分默认安装的Office都是32位版本,驱动位数必须和Excel位数匹配,而非和系统位数匹配。查看路径:Excel界面点击「文件」→「账户」→「关于Excel」,顶部会明确标注32/64位。
  • 确认驱动是否存在:打开对应位数的ODBC数据源管理器查看:
    • 64位驱动查看路径:C:\Windows\System32\odbcad32.exe
    • 32位驱动查看路径:C:\Windows\SysWOW64\odbcad32.exe
      切换到「驱动」选项卡,检查列表中是否存在「SQL Server Native Client 10.0」
  • 确认ADODB引用已配置:打开VBA编辑器,点击「工具」→「引用」,勾选「Microsoft ActiveX Data Objects x.x Library」(推荐选择6.1及以上版本)

3 快速修复方案

如果不想单独安装旧版Native Client驱动,可以直接替换连接字符串的Provider参数为系统自带的通用驱动:

方案A:使用系统默认预装的SQLOLEDB驱动(兼容性最高,无需额外安装)

Option Explicit

Const SQLConStr As String = "Provider=SQLOLEDB.1;Server=XXX\XXX;Database=XXX;Trusted_Connection=yes;"

Sub ConnectToDB()
    Dim PolicyDetails As ADODB.Connection
    Set PolicyDetails = New ADODB.Connection
    
    PolicyDetails.ConnectionString = SQLConStr 
    PolicyDetails.Open
    
    PolicyDetails.Close
    Set PolicyDetails = Nothing
End Sub

方案B:使用微软新版SQL Server OLEDB驱动(性能更好,支持高版本SQL Server新特性)

Const SQLConStr As String = "Provider=MSOLEDBSQL;Server=XXX\XXX;Database=XXX;Trusted_Connection=yes;"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 14:06:08