一位客户多年来一直使用 Excel VBA 应用程序与 SQL 数据库进行交互。最近,数据库已从 TLS 1.0 升级到 TLS 1.2,这导致 VBA 到数据库的连接失败,因为 SQLOLEDB 驱动程序已被弃用。(背景可以在 这里 和 这里 找到。)
为了解决这个问题,我正在尝试将 SQL 驱动程序从 SQLOLEDB 更改为 MSOLEDBSQL。然而,尝试连接到数据库会触发运行时错误 3706:“提供程序无法找到。可能未正确安装。”
以下是相关代码:
所有我在网上找到的指示都说只需安装来自微软的MSOLEDBSQL驱动程序,然后在代码中将
到目前为止所采取的步骤:
为了解决这个问题,我正在尝试将 SQL 驱动程序从 SQLOLEDB 更改为 MSOLEDBSQL。然而,尝试连接到数据库会触发运行时错误 3706:“提供程序无法找到。可能未正确安装。”
以下是相关代码:
Dim conn As ADODB.Connection
Dim sConnString As String
sConnString = "Provider=MSOLEDBSQL;" & _
"Data Source=MyServerName;" & _
"Initial Catalog=MyDBName;" & _
"User ID=SomeID;" & _
"Password=SomePassword;" & _
"DataTypeCompatibility=80"
Set conn = New ADODB.Connection
conn.Open sConnString
所有我在网上找到的指示都说只需安装来自微软的MSOLEDBSQL驱动程序,然后在代码中将
Provider=SQLOLEDB
更改为 Provider=MSOLEDBSQL
。但是由于我一直收到错误3706的提示,我可能漏掉了某个步骤。到目前为止所采取的步骤:
- 从 Microsoft 安装了 32 位的 MSOLEDBSQL 驱动程序。
- 确认 DLL 文件已添加到默认位置 C:\Windows\System32。
- 重启 Windows。
- 从命令行运行
REGSVR32 "C:\Windows\System32\msoledbsql19.dll"
。Windows 确认资源已正确注册。 - 在 Visual Basic 编辑器中,添加对 Microsoft ActiveX 数据对象 6.1 库 的引用(并删除对旧版本 2.8 库的引用)。
当 Windows 确认已正确注册时,驱动程序是否未被正确安装,如错误描述所述,这是可以想象的吗?我该如何解决这个问题?对此有什么想法?