是否有一种可靠的方法来确定给定sql代理在给定时间范围内运行的时间?
我有一个Microsoft.SqlServer.Management.Smo.Agent.Job
对象,但希望避免必须重新创建逻辑来根据其调度计算运行时间。我希望有一些内置的功能。
不,不幸的是没有。当你的工作有多个时间表时,要检测到这一点就更复杂了。
然而,对于你只有一个时间表的简单情况,我认为你可以这样做:
- 查询作业的
NextRunDate
- 设置计划的
ActiveStartDate
为下一个运行日期。 - 重复到你的间隔。
- 最后确保将
ActiveStartDate
设置为初始值。
您只能在创建作业时执行一次此操作,并持久化结果。因此,您消除了每次需要评估运行时时修改作业的风险(因为更改ActiveStartDate实际上会修改调度)。