【问题标题】:Test SQL Server Connection测试 SQL Server 连接
【发布时间】:2016-05-18 19:20:52
【问题描述】:

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

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

我发现uses either ADODB(与Mac 不兼容)或solution to Access VBA 的每个解决方案。 This 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

【问题讨论】:

  • 你考虑过使用 try/catch 吗?
  • @Takarii 我很确定 VBA 不支持 try/catch...
  • 没错。我在考虑VB

标签: sql-server excel vba macos odbc


【解决方案1】:

Windows 上也存在同样的问题。这里有 2 个可能的答案。

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 = 操作系统级别的 sql 客户端,您可以在其中通过命令行查询。在操作系统提示符下,使用 sqlcmd.exe 获取一个简单的“选择 1”,该文件要么成功并创建一个 sqlSuccess.{TestID}.tmp 文件,要么失败并且什么都不做。然后构建一个 VBA 函数,例如 fnGetConnString(),它运行命令并验证 sqlSuccess.{TestID}.tmp 文件是否存在并将其删除。如果程序失败,该函数可能会停止您的程序,或者返回您想要的连接字符串并作为(伪代码)运行:

connstring = fnGetConnString( {connection string inputs})
if connstring = '' then 
    msgbox( "Not a valid connection or sever unavailable: {connection string inputs}"
    exit sub ''#halt all
end if

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

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

对于来自 VBA 的操作系统命令,请参阅: Execute a command in command prompt using excel VBA

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 2018-11-12
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 2021-04-15
    • 1970-01-01
    相关资源
    最近更新 更多