【问题标题】:Excel Visual Basic ADODB SQL connection string not workingExcel Visual Basic ADODB SQL 连接字符串不起作用
【发布时间】: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


【解决方案1】:

正如你,FunnyO,已经说过的,它是连接字符串。 您可能没有正确的驱动程序定义。

尝试这样的事情: strCnn = "Provider=SQLNCLI11;Server=" & pServer & ";Database=" & pCatalog & ";Integrated Security=SSPI;"

当然,一个非常简单的连接字符串。但它应该可以解决,因为它是一个非常常见的...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-11
    • 2011-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多