Sql-Server
MSSQL 作業可以更改自己的活動計劃嗎?
我正在為 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 文件: