Sql-Server-2005

重置/強制 SQL 代理下次執行日期

  • July 20, 2016

我需要在一段時間內測試 SQL 代理,因此需要經常(並返回)將系統時鐘更改為未來……別擔心,這只是我的本地機器而不是伺服器 :-)

問題是當我再次將它設置回目前日期時間時,下一次執行日期仍然會聽到未來的時間。

例如,如果我將時鐘設置為未來,並且作業設置為每分鐘執行一次,並且上次執行時間是 11/01/2080 01:01:00,那麼下一次執行是 11/01/2080 01:02: 00,即使我把時鐘調回現在。

這是可以理解的,這是 SQL Server 的正常行為。有沒有辦法輕鬆重置下一個執行日期?

我已經嘗試手動執行該作業,但它對下次執行時間沒有影響。

在 Aaron 完成了出色的工作之後,我發現執行下面我的 ReloadJobSchedules 列的結果就可以了。出於某種原因,我無法通過手動更新 msdb.dbo.sys.sysjobschedules.next_run_date 來讓計劃刷新到正確的下一次執行日期。

SELECT  j.name AS JobName
       ,sch.name AS ScheduleName
       ,'EXECUTE msdb..sp_update_jobschedule @job_name = ''' + j.name + ''', @name = ''' + sch.name + '''' AS ReloadJobSchedules
FROM    msdb.dbo.sysjobschedules s
INNER JOIN
       msdb.dbo.sysschedules sch
       ON  s.schedule_id = sch.schedule_id
INNER JOIN
       msdb.dbo.sysjobs j
       ON s.job_id = j.job_id
WHERE   sch.[enabled] = 1       
ORDER BY
       j.name

msdb..sysjobschedules好吧,如果您不想等待 20 分鐘讓後台執行緒自行更正(如本答案中所述) ,您可以手動更新。

UPDATE msdb.dbo.sysjobschedules
 SET next_run_date = CONVERT(INT, CONVERT(CHAR(8), GETDATE(), 112))
 WHERE CONVERT(CHAR(4), next_run_date) > '2020';

但是,我還沒有嘗試過,因此請謹慎使用。

引用自:https://dba.stackexchange.com/questions/31775