這是一個棘手的問題。首先你包含的stackexchange鏈接非常好。我遵循了這一點,並且做了我自己的追蹤。下面的代碼將使您朝着正確的方向發展。你可能需要做詳細的測試,我發現當答案是同一分鐘,但秒數稍微偏離時,我遇到了一些計時問題。你當然可以根據需要進行修改。
這裏是代碼的第一稿應該把你在正確的方向
declare @jobname [sysname] = 'Check'
Select
nextOne = min(
case freq_subday_type
when 8 then dateadd(hour , (Datediff(hour , [dbo].[agent_datetime](sjs.next_run_date, sjs.next_run_time), getdate())/freq_subday_interval + 1) * freq_subday_interval, [dbo].[agent_datetime](sjs.next_run_date, sjs.next_run_time))
when 4 then dateadd(minute, (Datediff(minute, [dbo].[agent_datetime](sjs.next_run_date, sjs.next_run_time), getdate())/freq_subday_interval + 1) * freq_subday_interval, [dbo].[agent_datetime](sjs.next_run_date, sjs.next_run_time))
when 2 then dateadd(second, (Datediff(minute, [dbo].[agent_datetime](sjs.next_run_date, sjs.next_run_time), getdate())/freq_subday_interval + 1) * freq_subday_interval, [dbo].[agent_datetime](sjs.next_run_date, sjs.next_run_time))
end)
FROM msdb.[dbo].[sysschedules] ss
inner join msdb.[dbo].[sysjobschedules] sjs on ss.schedule_id = sjs.schedule_id
inner join msdb.[dbo].[sysjobs] sj on sjs.job_id = sj.job_id
where sj.Name = @jobname and ss.enabled = 1