Sql-Server

MSSQL 作業可以更改自己的活動計劃嗎?

  • May 30, 2019

我正在為 MSSQL Sever 2016 計劃一份新工作。

我希望作業在星期日每 10 分鐘執行一次,直到它看到確認記錄被添加到它檢查的表中作為作業的最後一步。如果該記錄存在,則作業會修改其目前計劃,以便在下週日之前不會再次執行。這讓我想知道計劃何時在“自然”工作週期中更新。我想知道我的更改是否會在使用之前被覆蓋。

那麼,我可以在工作的最後一步中使用 msdb.dbo.sp_update_jobschedule 來對目前工作執行此操作嗎?這樣做可能會遇到哪些技術陷阱?

範例和/或替代解決方案始終受到歡迎。

你可以,使用儲存過程sp_update_schedule

   declare @shcedule_id int

   if exists (select 1 from your_table where condition = 'met') begin

   select @shcedule_id  = s.schedule_id from sysjobs j
   inner join sysjobschedules s on j.job_id = s.job_id
   where j.name = 'test_job'


   sp_update_schedule @schedule_id = 9, @freq_type = 4, @freq_recurrence_factor = 1, 
   @active_start_date = 20190529, @active_start_time = 155500


   end

這會將其更改為每週一次,每 1 週在下午 3:55 重複一次。

您可以通過設置將其設置回每天@freq_type = 4

這是 SP 上的 Microsoft 文件:

https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-update-schedule-transact-sql?view=sql-server-2017

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