我有一个SQL代理作业,我希望使用以下内容启动其他4个SQL代理作业:
DependencyProperty
现在每个工作都是自己的步骤,但是,工作不等待工作成功完成,它只是开始下一步,所以所有4个工作都在同时运行。有没有办法让它在开始下一份工作之前等待?
由于
答案 0 :(得分:2)
SQL代理作业步骤在进入下一步之前等待它收到“成功”消息。但是,当该步骤调用msdb.dbo.sp_start_job时,它会在目标作业启动后立即收到“成功”消息。消息是说“是的,我成功地开始了工作”。
如果这是您使用的方法,则无法让它等待完成该作业。
但是,如果您将五个作业合并为一个作业,并按所需顺序执行步骤,则每个步骤将等到上一步完成后再开始。
答案 1 :(得分:2)
我之前已经等了这个:
WAITFOR DELAY '00:00:02';
while exists (select * from msdb.dbo.sysjobs j
inner join msdb.dbo.sysjobactivity a on j.job_id = a.job_id
where name = 'My Other Job'
and stop_execution_date is null and start_execution_date is not null)
begin
WAITFOR DELAY '00:00:02';
end
你可以暂停任何有意义的事情。我的工作相对较小,所以我在检查之间只等了2秒钟。