为什么 Sql Server Agent 的 Next Run Time 值可能不是我所期望的?这绝对是我下次工作的时候吗?

top*_*wik 6 sql-server sql-server-agent

有时,我发现 sysjobschedules.next_run_date 和 time 字段中的 sql server 代理值存在一些不一致。

我有一个与 sql 调度系统交互的 Web 界面。

我创建了一个测试作业,该作业于 2011 年 3 月 16 日上午 9:45 开始。我已将其设置为每 4 周在星期三发生一次。

从今天开始,这应该将下一次运行日期和时间放在 1 月 18 日 9:45,但我工作的下一次运行日期/时间值是 1 月 4 日。

作业属性中的值看起来不错。
开始日期是 2011
年3 月 16 日。频率值都是正确的。
但似乎 SQL 未能正确地发生这种情况。

以下是 sp_help_jobschedule proc 中有关作业的一些相关信息

freq_type 8
freq_interval的 8
的freq_subday_type 1
freq_subday_interval 1
freq_relative_interval 0
freq_recurrence_factor 4
active_start_date的 20110316
active_end_date的99991231
active_start_time 154500
active_end_time 55959
DATE_CREATED 2011-12-29 20:37:05.737
schedule_description 周三每4周(或多个)在154500
next_run_date 20120104
next_run_time 154500

如果开始日期是 2011 年 3 月 16 日 9:45,则根据作业的属性,下一次运行日期将落在 2012 年 1 月 4 日是没有意义的。


我想我的问题是,我可以在多大程度上依赖此 Next Run Date 数据?

top*_*wik 2

根据 2011 年 3 月 16 日的有效开始日期,2012 年 1 月,我们预计计划发生时间为 1 月 18 日星期三。

如果该计划的修改日期大于活动开始日期,SQL 似乎会使用修改日期作为起点,确定下周三开始 4 周序列。

如果更新发生在 1 月 10 日星期二,则下一个运行日期将变为 1 月 11 日星期三,并且从该日期起 4 周后的每个星期三,现在相对于 1 月 11 日,现在从原始序列中省略 1 月 18 日。

在计算下一个运行日期时,活动开始日期似乎不再与 SQL Server 相关。

它只会选择未来的第二天,从修改日期开始,与请求的工作日相匹配;在这种情况下是下周三。