如何将 VBScript (Excel) 连接到 SQL Server Web 数据库(通过 IP)?

问题描述 投票:0回答:3

我们正在尝试将带有 VBScript 宏的 Excel 文档连接到存储在 Web 服务器中的数据库,但由于某种原因无法识别用户并反复抛出错误。

我放弃了一个连接问题,因为它返回了一个 SQL 错误,而不是像超时或服务器不存在之类的东西。

我们正在尝试使用 ip 地址连接到服务器。
我们检查了日志记录方法是混合的(win 和 sql)并且启用了到服务器的远程连接。
如果我使用连接字符串(用户名和密码)中提供的凭据,我可以毫无问题地登录到 SQL Server。
我们尝试了直接连接(外部 vpn),因为我们认为它可能是我们的防火墙,但得到了同样的错误。

我得到的错误(不是原来的,因为它是西班牙语,但与此非常相似):

尝试连接的代码(测试数据但与现实相似)。

Sub excel_sqlsrv()
Set rs = CreateObject("ADODB.Recordset")
Set conn = CreateObject("ADODB.Connection")
strConn = "Driver={ODBC Driver 17 for SQL Server};Server=10.20.30.5;Database=mydb;UID=sa;PWD=abcd12345;"
conn.Open strConn
strSqL = "SELECT * FROM USERS"
rs.Open strSqL
End Sub
sql-server excel vba database-connection
3个回答
2
投票

使用 ODBC 数据源管理器创建一个名为 mydb 的连接并测试它是否正常工作。然后使用

Sub excel_sqlsrv()

    Const strConn = "mydb" ' ODBC source
    Const strsql = "SELECT * FROM USERS"
    
    Dim conn As Object, rs As Object
    Set rs = CreateObject("ADODB.Recordset")
    Set conn = CreateObject("ADODB.Connection")
    
    On Error Resume Next
    conn.Open strConn
    
    If conn.Errors.Count > 0 Then
        Dim i, s
        For i = 0 To conn.Errors.Count - 1
            s = s & conn.Errors(i) & vbLf
        Next
        MsgBox s
    Else
        On Error GoTo 0
        Set rs = conn.Execute(strsql)
        Sheet1.Range("A1").CopyFromRecordset rs
    End If
    
End Sub


1
投票

您可以尝试使用 OLEDB 提供程序而不是 ADODB。


1
投票

尝试使用 SQL Server 实例而不是简单的 IP 地址作为参数。

例如:

Const strConn = "DRIVER={ODBC Driver 17 for SQL Server};" & _
                    "SERVER=SQL-INSTANCE\INSTANCENAME; DATABASE=DATABASENAME; UID=USER; PWD=PASSWORD;"

我有一个类似的问题,如果不是同一个问题,这解决了它。

使用正确的登录凭据将 ODBC 源添加到数据源。
添加 ODBC 数据源时,不要将其添加为 DSN 用户,而是添加为 DSN 系统。

© www.soinside.com 2019 - 2024. All rights reserved.