测试SQL Server连接

时间:2016-02-08 23:33:32

标签: sql-server excel vba odbc excel-vba-mac

我构建了一个基于Excel的工具,它使用ODBC连接和查询表从SQL Server中提取数据(2014)。此工具必须与Mac Office 2016兼容(因此ODBC和查询表)。

我正在努力测试用户是否可以连接到SQL Server。使用ODBC连接,如果连接失败,将打开SQL Server错误登录对话框,然后在我的错误处理生效之前打开登录对话框。

enter image description here enter image description here

我发现此问题的每个解决方案uses either ADODB(与Mac不兼容)或solution to Access VBAThis answer讨论TCP连接,但我无法找到任何与Mac兼容的TCP和VBA。

是否有人知道使用VBA测试与Office for Mac 2016兼容的SQL Server连接的方法?

我如何使用ODBC和查询表连接到SQL Server的示例。

Sub main()
    On Error GoTo err1
    Dim connstring As String
    Dim sqlstring As String
    Dim dArr As Variant
    Dim qt As QueryTable

    connstring = "ODBC;DRIVER={SQL Server};SERVER=SERVERNAME;DATABASE=master;Trusted_Connection=yes"
    sqlstring = "SELECT 1"

    Set qt = ActiveSheet.QueryTables.Add(Connection:=connstring, Destination:=ThisWorkbook.Sheets(1).Range("A1"), Sql:=sqlstring)

    With qt
      .BackgroundQuery = False
      .RowNumbers = False
      .Refresh
    End With

    dArr = qt.ResultRange.Value
    qt.Delete

    ThisWorkbook.Sheets(1).Cells.Clear
    Exit Sub
err1:
Stop
End Sub

1 个答案:

答案 0 :(得分:0)

Windows上存在相同的问题。这是两个可能的答案。

1)不确定是否与MAC:https://answers.microsoft.com/en-us/msoffice/forum/msoffice_access-mso_other-mso_2007/connection-error-when-network-down/35d5be85-f850-4953-a393-6fafa687961f?messageId=0c063768-69c7-43ce-a9ed-9139f8cfd830

兼容

2)原则上,这应该没有做过。需要sqlcmd.exe = OS级sql客户端,您可以在其中查询命令行。在操作系统提示符下,获得一个简单的“选择1”以使用sqlcmd.exe可以成功运行并创建一个sqlSuccess。{TestID} .tmp文件,或者失败并且不执行任何操作。然后构建一个VBA函数,例如说运行命令的fnGetConnString()并验证sqlSuccess。{TestID} .tmp文件是否存在并将其删除。如果该函数失败,该函数可能会终止您的程序,或者返回您所需的connstring并以(伪代码)运行:

@Bean
public ApplicationRunner runner(CachingConnectionFactory mainConnectionFactory) {
    return args -> {
        try (Connection connection = mainConnectionFactory.createConnection()) {
            System.out.println(connection.getDelegate().getAddress());
        }
    };
}

除其他事项外,该函数需要接受{TestID}作为输入,以确保其具有正确的文件。

有关sqlcmd帮助,请参见:https://docs.microsoft.com/en-us/sql/tools/sqlcmd-utility?view=sql-server-ver15

有关VBA的OS命令,请参见: Execute a command in command prompt using excel VBA