【问题标题】:Can I get SQL Server to reset a job if the job takes more time than the prescribed interval on a specific job execution?如果作业花费的时间超过特定作业执行的规定时间间隔,我可以让 SQL Server 重置作业吗?
【发布时间】:2013-01-03 17:58:16
【问题描述】:

我有一份工作每 5 分钟运行一次。每隔一段时间,如果我们的数据库负载很大,那么这项工作将花费更长的时间。然后该作业将不再运行,因为下一个计划时间已经过去。有没有办法让 SQL Server 解决这个问题,以便即使在其中一次长时间运行之后它也能再次运行?

【问题讨论】:

  • 我会看看这个帖子:stackoverflow.com/questions/1200527/…我知道你没有“超时”,但是你正在重叠你的时间,这对我来说听起来应该更多地分解或分散工作进一步分开。因此,不要为您提出的问题找到解决方案,而是尝试从这个角度解决它。
  • @ammills01 太好了,谢谢。我正在运行一个 Windows 应用程序来完成这项工作,所以我无法进一步分解它。我只是使用了 SQL 的调度程序,因为 Windows 任务调度程序不允许每天多次调度任务。也许我应该研究一个不同的调度工具?
  • 我没有使用它,但我只是在我的 Windows 7 机器上打开了任务计划程序,如果我创建一个新任务并进入触发器,我可以将任务设置为“按计划”,每天,并且有一个“高级设置”部分,我可以选择每 5 分钟重复一次任务。此外,在“设置”下还有一个选项可以在错过任务时尽快运行。
  • @ammills01 太棒了,这就解释了。我们的服务器运行的是 Windows Server 2003,并且没有“如果错过就尽快运行任务”的选项。我将不得不研究另一种解决方案。我可能不得不在我的程序本身中添加调度逻辑,让它运行一整天。
  • @nfw 看起来你可以schedule multiple tasks daily with Windows Server 2003(使用/st 参数,并且很可能也使用GUI)。

标签: sql-server jobs


【解决方案1】:

如果您有一个连续运行的脚本,您可以每 5 分钟spawn a second script from within the script(无需等待它退出)。在涉及自定义应用程序的 Windows 中,有许多替代(更好的)方法可以进行调度。

但是,如果超过 5 分钟,您将有重叠的脚本运行,这可能不是您想要的。一种解决方法是在第二个脚本启动时创建一个临时文件,完成后将其删除,并在脚本开头检查它是否存在,如果存在则退出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-11
    • 2013-02-05
    • 1970-01-01
    • 1970-01-01
    • 2018-09-26
    • 2019-05-23
    • 1970-01-01
    相关资源
    最近更新 更多