0

我试图在 SQL 代理中解决以下场景。

Job 2 需要在凌晨 1 点开始,但依赖于 Job 1。

我一直在试图弄清楚是否有办法安排特定步骤?这样,我可以让第 2 步依赖于第 1 步,而不是让第 2 步工作,并将其安排在以后的时间。

或者,我知道我可以建立一个表来确定依赖关系。类似于SQL Server 代理作业依赖。但是,我希望让它足够智能,如果 Job 1 尚未在预定时间完成,Job 2 将尝试在稍后的时间间隔再次运行。

4

1 回答 1

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 完成时。

于 2016-09-01T00:41:52.313 回答