确定某个时间范围内SQL代理的预期运行时间



是否有一种可靠的方法来确定给定sql代理在给定时间范围内运行的时间?

我有一个Microsoft.SqlServer.Management.Smo.Agent.Job对象,但希望避免必须重新创建逻辑来根据其调度计算运行时间。我希望有一些内置的功能。

不,不幸的是没有。当你的工作有多个时间表时,要检测到这一点就更复杂了。

然而,对于你只有一个时间表的简单情况,我认为你可以这样做:

  • 查询作业的NextRunDate
  • 设置计划的ActiveStartDate为下一个运行日期。
  • 重复到你的间隔。
  • 最后确保将ActiveStartDate设置为初始值。

您只能在创建作业时执行一次此操作,并持久化结果。因此,您消除了每次需要评估运行时时修改作业的风险(因为更改ActiveStartDate实际上会修改调度)。

最新更新