【发布时间】:2019-07-27 21:50:40
【问题描述】:
我正在尝试通过 VBA 中的自动化连接到 SQL Server,因此每次 Excel 启动时,SQL 语句都会更新 Excel 中的表。
问题是,我的连接字符串总是抛出异常:
"运行时错误"-2147217843 (80040e4d)';自动化错误”
我提供了以下数据:
- 服务器名称,虽然它的名称中有逗号
- 数据库名称
我还有一个 Windows 用户(帐户名和密码),我从中运行语句,但我怀疑是否有必要将此信息提供给 SQL Server。
连接字符串如下所示:
Public Sub OpenConnection2(pServer As String, pCatalog As String)
Dim mDataBase As New ADODB.Connection
Dim mRS As New ADODB.Recordset
Dim mCmd As New ADODB.Command
Call mDataBase.Open("Provider=SQLOLEDB;Initial Catalog=" & pCatalog & ";Data Source=" & pServer & ";")
mCmd.ActiveConnection = mDataBase
End Sub
【问题讨论】:
-
AFAIR “自动化错误” - 表示在创建 COM 对象的阶段出现问题。所以你的连接字符串本身可能没问题。问题可能出在已注册/未注册的 OLEDB 提供商中
-
要使用 Windows 身份验证进行连接,请将“;Integrated Security=SSPI”添加到连接字符串,以便使用当前的 Windows 帐户。无需指定用户/密码。你提到 servername 有一个逗号 - 你的意思是一个逗号后跟一个端口号?
-
好的,我明白了。我将研究 OLEDB-Providers,并添加了 Integrated Security=SSPI。尽管服务器名称本身就像一个整数,但仍然无法正常工作。是这样的:“asdf15789,456”所以是的,是一个数字和一个特定的端口
-
肯定是connectionstring,我把所有的都注释掉了,除了con.Open ConnectionString,错误依旧存在
标签: sql-server excel vba adodb