相关疑难解决方法(0)

SQL 代理如何以及何时更新 next_run_date/next_run_time 值?

我一直在研究 T-SQL 中的代码,以使用 msdb 数据库中的 sp_add_jobschedule proc 向 SQL 代理作业添加新计划。当我添加新计划(通常在特定日期/时间运行一次)并立即查看 sysjobschedules 和 sysschedules 中的值时,我可以看到新计划已添加并与我的 SQL 代理的 job_id 相关联工作。但是,next_run_date 和 next_run_time 的值在其中为 0。当我在 2 或 3 分钟后再次查看它们时,它们仍然显示为 0。但是,当我再过 5 或 10 分钟后再回来时,它现在可以正确显示与下一次计划运行相对应的日期和时间值。

所以我的问题是:

  • 这些值多久更新一次?
  • 更新这些值的过程是什么?
  • 如果我要添加一个计划,比如说,未来 1 分钟,这是否意味着该作业将不会运行,因为 next_run_date/time 尚未更新?

我用来添加新计划的代码示例:

exec msdb.dbo.sp_add_jobschedule @job_id = @jobID
                    , @name = @JobName
                    , @enabled = 1
                    , @freq_type = 1
                    , @freq_interval = 0
                    , @freq_subday_type = 0
                    , @freq_subday_interval = 0
                    , @freq_relative_interval = 0
                    , @freq_recurrence_factor = 0
                    , @active_start_date = …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 sql-server sql-server-agent

16
推荐指数
1
解决办法
2万
查看次数