【问题标题】:How to simulate an ODBC time-out error?如何模拟 ODBC 超时错误?
【发布时间】:2011-04-16 08:42:11
【问题描述】:

我正在测试 Access-VBA 控制进程的错误处理:

  1. Access“控制器”数据库中的脚本启动。
  2. 脚本在 2nd Access 文件(“数据库”)中启动宏。
  3. “数据库”文件中的宏运行一堆可生成的查询。
  4. 这些查询从链接到 ODBC 源(实际上是 SQL-Server)的表中提取。

当此过程在清晨运行时,有时查询会超时。今天,我更新了控制器脚本中的错误处理,所以我想模拟一个超时错误。

我查看了 MS Access 中的 ODBC 管理员和高级选项,但没有找到我需要的选项。想法?

【问题讨论】:

    标签: sql-server vba ms-access error-handling odbc


    【解决方案1】:

    在设计视图中打开您的宏。在视图菜单下,选择属性。 它应该是 Timeout 属性,将其设置为短值并进行测试。

    【讨论】:

    • 好主意,但没有奏效。我认为该属性仅在 服务器无法响应之后使用。
    【解决方案2】:

    re:有时查询会超时。

    确保您的 ODBC 超时查询属性设置为零,这样它就不会产生错误而是继续运行。

    【讨论】:

    • +1 表示好主意。但如果我这样做了,我的报告就会相互备份。
    • 如果它们在宏或代码中被顺序调用,则不会。它们是否依赖于彼此的结果?
    • 如果我按顺序运行它们并且第一个报告延迟了一个小时,那么之后的每个报告也会延迟。我宁愿几分钟后放弃第一份报告,然后继续下一份报告。
    • ok,那么你可以设置查询超时属性为1,超过1秒返回就会超时。
    • 现在,这些脚本都在由 Windows 任务调度程序调用的单独文件中。所以,从长远来看,你的建议是有道理的,但我必须重新设计整个事情。
    【解决方案3】:

    如果您的查询是修改,您可以添加一个调用 WAITFOR 的触发器。 Described here.

    【讨论】:

      【解决方案4】:

      在您的 SQL 查询中添加以下语句 - 它应该会导致超时。

      --waits for 5 mins
          WaitFor Delay '00:05'
      

      或者,如果您不想修改现有查询,您可以在宏查询的表之一上运行它。这将锁定表 3 分钟

      begin transaction
      
      Select *
      From MyTable with (TABLOCKX)
      --wait for 3 min
      WaitFor Delay '00:03'
      
      rollback transaction
      

      【讨论】:

      • 我在直通查询中使用您的事务示例,但它一直提示我输入数据源。如何将数据源放入事务中?
      • @PowerUser - 您不能在 SSMS 查询窗口中运行此查询吗?老实说,我对 MS Access 了解不多。
      • 抱歉,我什至不知道什么是 SSMS 查询窗口。很确定 Access 没有它。
      • @Pow – 如果它是 SQL Server 数据源,那么贵公司的某个人知道如何直接连接到该数据库并发出命令。执行此操作的一种工具称为 SQL Server Management Studio (SSMS)。这就是 Barry 向您建议的命令的上下文。
      猜你喜欢
      • 1970-01-01
      • 2011-02-27
      • 2015-07-16
      • 2015-06-26
      • 2023-02-05
      • 2023-03-08
      • 2021-03-31
      • 2018-05-02
      • 1970-01-01
      相关资源
      最近更新 更多