我试图在 SQL 代理中解决以下场景。
Job 2 需要在凌晨 1 点开始,但依赖于 Job 1。
我一直在试图弄清楚是否有办法安排特定步骤?这样,我可以让第 2 步依赖于第 1 步,而不是让第 2 步工作,并将其安排在以后的时间。
或者,我知道我可以建立一个表来确定依赖关系。类似于SQL Server 代理作业依赖。但是,我希望让它足够智能,如果 Job 1 尚未在预定时间完成,Job 2 将尝试在稍后的时间间隔再次运行。
我试图在 SQL 代理中解决以下场景。
Job 2 需要在凌晨 1 点开始,但依赖于 Job 1。
我一直在试图弄清楚是否有办法安排特定步骤?这样,我可以让第 2 步依赖于第 1 步,而不是让第 2 步工作,并将其安排在以后的时间。
或者,我知道我可以建立一个表来确定依赖关系。类似于SQL Server 代理作业依赖。但是,我希望让它足够智能,如果 Job 1 尚未在预定时间完成,Job 2 将尝试在稍后的时间间隔再次运行。
有不同的方法。
一个是
1) 在 Job 1 中创建最后一步以启动 Job 2
exec msdb.dbo.sp_start_job @job_name = 'enter you job name here'
2)Job 2的第一步应该是TSQL命令
WIATFOR DELAY xx:yy:zz
xx,yy,zz 值应计算为从现在到所需的凌晨 1 点之间的时间差。
如果 NOW() 大于凌晨 1 点,则退出(完成)步骤 1 以立即执行步骤 2。
请注意,不应安排在这种情况下的作业 2。
另一种方法:
在作业 2 中,WHILE 循环的第一步检查作业 1 的状态(代码可以很容易地在网上找到),有一些延迟,例如 1 分钟。循环退出条件是 Job 1 完成时。