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