2

我正在使用 SSIS 2008。我有 2 个计划的作业,它们启动 2 个不同的包。我想当包 2 启动时,它会确保包 1 没有仍在运行。如果是,则退出。

可能的?

谢谢。

4

2 回答 2

5

当然!!您可以按照以下步骤操作

1)在job2中,添加第一步以检查job1(反过来,package1)是否正在运行 - 使用以下脚本 - 从检查 SQL Server 代理作业是否正在运行

IF NOT EXISTS(     
    select 1 
    from msdb.dbo.sysjobs_view job  
    inner join msdb.dbo.sysjobactivity activity on job.job_id = activity.job_id 
    where  
        activity.run_Requested_date is not null  
    and activity.stop_execution_date is null  
    and job.name = @JOB_NAME -- name of job1
)

2)上述脚本将返回布尔值,根据该值,您可以决定执行第二步job2- 这将是 - 执行package2

于 2013-07-08T13:49:03.043 回答
3

另一种方法是在 SQL JOB 中定义两个步骤,以便您希望执行包,然后将包 1 的 On Success Action 设置为“转到下一步”,并将 Success Action 设置为“退出作业报告成功”包 2。

包 2 将仅在包 1 完成后运行。

于 2013-07-08T14:13:34.140 回答