测试 SQL Server 连接

2023-12-30

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

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

我找到的这个问题的每个解决方案使用 ADODB https://stackoverflow.com/a/632449/2200824(与 Mac 不兼容)或者是访问VBA的解决方案 http://answers.microsoft.com/en-us/office/forum/office_2007-access/ms-access-vba-connecting-to-unavailable-sql-server/ecc8df4a-3164-44bb-b959-a61998d83e14. 这个答案 https://stackoverflow.com/a/27245389/2200824谈论 TCP 连接,但我找不到任何关于 TCP 和 VBA 的内容,看起来与 Mac 兼容。

有谁知道使用 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

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 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 执行简单的“select 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://learn.microsoft.com/en-us/sql/tools/sqlcmd-utility?view=sql-server-ver15 https://learn.microsoft.com/en-us/sql/tools/sqlcmd-utility?view=sql-server-ver15

对于来自 VBA 的操作系统命令,请参阅:使用 Excel VBA 在命令提示符下执行命令 https://stackoverflow.com/questions/17956651/execute-a-command-in-command-prompt-using-excel-vba

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

测试 SQL Server 连接 的相关文章

随机推荐

  • 为什么填充必须是 2 的幂?

    我正在做一些示例程序来探索 C 并且想知道为什么结构填充只能以 2 的幂来完成 include
  • 避免“通过派生类型访问类型的静态成员”

    我相信这纯粹是 Resharper 警告 但其背后的原因 已解释 here https stackoverflow com questions 660132 using a classs static member on a derived
  • macOS 13升级xcode git命令行工具总是尝试找到旧的SDK,即使安装了git它仍然声称我需要安装

    xcodebuild 错误 无法找到 SDK Applications Xcode beta app Contents Developer Platforms MacOSX platform Developer SDKs MacOSX12
  • PyQt5:如何安装/运行 Qt Designer

    现在感觉真的很愚蠢 但标题说明了一切 How你启动QtDesigner了吗 我已经安装了PyQt5 via pip我相信已将其安装目录确定为 C Users username AppData Local Programs Python Py
  • “数据位”容量与“开销位”大小?

    我有点困惑 因为我找不到任何涵盖缓存 数据 部分的内容 我在 google 上搜索到的所有内容 99 9 都与缓存寻址有关 我被问到的问题是这样表述的 Contrast the difference between data bit cap
  • DbSet<>.Local 使用时需要特别小心吗?

    几天来 我一直在努力从存储库中检索我的实体 DbContext 我试图在原子操作中保存所有实体 因此 不同的实体在一起对我来说代表着有价值的东西 如果所有实体都是 有效 那么我可以将它们全部保存到数据库中 实体 a 已存储在我的存储库中 需
  • 多个物体之间的碰撞

    我正在编写一个简单的物理系统来娱乐 但我遇到了一个让我陷入困境的问题 现在的基本算法是 移动物体 检查是否有碰撞 If there was a collision 将对象移动最小距离以解决碰撞 根据法线 质量等调整速度 我有一个移动的物体朝
  • 情感分析中的否定处理

    我在这里需要一点帮助 我需要识别 不好 不错 等负面词语 然后识别情绪的极性 消极或积极 除了处理否定之外 我做了所有事情 我只是想知道如何将否定包含在其中 我该怎么办 否定处理是一个相当广泛的领域 有许多不同的潜在实现 在这里 我可以提供
  • 无法确定存储版本 - 实体框架

    我正在当前解决方案的一个单独的项目中实现代码优先模式 因为我这样做了 所以我初始化了我的连接字符串DbContext我收到这个奇怪的错误 无法确定存储版本 有效的存储连接或 需要版本提示 我正在使用 Entity Framework 5 0
  • 从对象验证消息中删除字段名称

    我在表单中使用它对对象进行了简单的活动记录验证 form error messages message gt header message gt 这又会输出类似 FieldName My Custom message 的内容 我需要做的是从
  • JavaFX BooleanProperty 和 Hibernate

    我正在尝试将 JavaFX BooleanPropety 添加到由 Hibernate 保留的模型中 但出现以下错误 Caused by org hibernate MappingException Could not determine
  • 避免在释放控件时调用 Invoke

    我的工作线程中有以下代码 ImageListView下面是源自Control if mImageListView null mImageListView IsHandleCreated mImageListView IsDisposed i
  • RSpec:如何存根继承的方法 current_user (无需设计)?

    我有一个基于 MHartl 的控制器RoR4 教程 http www railstutorial org book single page 就像 MHartl 一样 我没有使用设计 I 推出了我自己的身份验证系统 http www rail
  • UIImagePickerController 快门

    I have bug with UIImagePickerController which source type is camera Sometimes after controller appeared shutter is not o
  • 实现 π (pi) 的 Spigot 算法

    我很难理解插口算法找到 pi here http www cut the knot org Curriculum Algorithms SpigotForPi shtml在页面底部 我在第 2 部分 将 A 放入常规形式 的底部迷失了方向
  • 如何在 C# 中的随机端口上创建 HttpListener 类?

    我想创建一个在内部提供网页服务的应用程序 并且可以在同一台计算机上的多个实例中运行 为此 我想创建一个HttpListener监听的端口是 随机选择 目前未使用 本质上 我想要的是这样的 mListener new HttpListener
  • 如何设置新创建的 emacsclient 的样式和位置?

    我最近改用 emacsclient 进行大部分文本编辑 我正在尝试将一些设置迁移到新的 略有不同的 环境 特别是 在我的 emacs 文件中 我有一个设置窗口大小并准备一些主题的函数 但是 emacs 文件中的代码不会在每次调用 emacs
  • 如何在 AppEngine Standard 和 Nodejs 中提供静态文件

    The 文档 https cloud google com appengine docs standard nodejs serving static files表示您只需更新您的 app yaml 就像 AppEngine 中的任何语言一
  • MongoDB:将多个集合中的数据合并为一个......如何?

    我如何 在 MongoDB 中 将多个集合中的数据合并到一个集合中 我可以使用map reduce吗 如果可以的话怎么办 因为我是新手 所以我非常感谢一些例子 MongoDB 3 2 现在允许人们通过以下方式将多个集合中的数据合并为一个集合
  • 测试 SQL Server 连接

    我构建了一个基于 Excel 的工具 它使用 ODBC 连接和查询表从 SQL Server 2014 提取数据 该工具必须与 Mac Office 2016 兼容 因此需要 ODBC 和查询表 我正在努力测试用户是否可以连接到 SQL S