【问题标题】:How to tell if ADODB CommandTimeout is reached?如何判断是否达到 ADODB CommandTimeout?
【发布时间】:2021-04-17 13:47:16
【问题描述】:

我有一些使用 ADODB 查询 SQL 数据库的 VBA。目前我将 CommandTimeout 设置为 30 秒。如果没有返回任何内容,可能是因为 SQL 数据库中不存在此类记录,也可能是因为已达到超时。我希望能够区分这两种情况并在达到超时时显示警告。有没有办法做到这一点?

【问题讨论】:

  • 如果超时,则会抛出一个错误,所以这不是问题。
  • 谢谢!我没有意识到有一个错误处理程序将结果设置为空白以防出错。我可以调整它以显示警告。
  • 我认为您可能想首先调查为什么会超时
  • @Charlieface 这很简单,我正在查询一个巨大的数据库,并且不希望用户等待超过 30 秒才能运行查询。我无法控制我正在查询的数据库的结构,只有 VBA。
  • 我明白了。尽管如此,可以在几毫秒内使用正确的索引查询大型数据库,因此如果您有权创建索引,那么就有足够的空间来大规模加速查询

标签: sql vba ado


【解决方案1】:

首先阅读:ADO Event Instantiation: Visual Basic

检查 EventStatusEnum 的 adStatusOK - 不应设置超时。

你也可以赶上“InfoMessage” InfoMessage Event 在运行查询时查看类似 SSMS 中的信息。

【讨论】:

  • 顺便说一句。在接下来的几天里,我将在我的测试环境中尝试这个概念。
  • 是否重复 link ? NET 有解决方案,但您使用的是 VBA。
猜你喜欢
  • 1970-01-01
  • 2011-09-03
  • 1970-01-01
  • 2013-02-21
  • 1970-01-01
  • 2016-01-31
  • 1970-01-01
  • 1970-01-01
  • 2011-03-24
相关资源
最近更新 更多