检索ssis作业中的步骤状态

时间:2014-11-17 18:04:24

标签: sql-server ssis etl sql-agent-job

我们在日常任务(更新,ETL ......)中使用了不同的SSIS包,并且我们有一种复杂的结构,其中包调用不同的其他包。主要有大约10个主要工作称为辅助工作。因此,即使步骤失败,这10个工作也总是成功,因此它不会阻止其他执行。虽然我们希望通过SQL查询检索与这些作业相关的步骤(及其状态),但我们无法在步骤和调用作业之间进行连接,同时检索状态(步骤状态)在这种情况下而不是工作)。

我在网上搜索了很多,我总是找到一个脚本加入步骤并在没有状态或步骤和状态的情况下调用作业而不知道正在调用哪个作业......

(例如this linkthis one

所以总结一下,我们正在尝试查询我们可以加入工作,他们的状态和他们的父工作。

对此事的任何帮助都会非常感谢并提前感谢。

修改

感谢@BaconBits注释中的链接,我能够创建一个连接三个表(msdb.dbo.sysjobsteps,msdb.dbo.sysjobs,msdb.dbo.sysjobhistory)的查询,该表检索如下内容:

Job_name1 Step_name1  Job1_status
Job_name1 Step_name2  Job1_status
Job_name1 Step_name3  Job1_status
Job_name2 Step_name1  Job2_status
Job_name2 Step_name2  Job2_status

但是我仍然无法检索步骤状态(这是我在这种情况下需要的,因为即使步骤失败,工作结果总是成功的)

查询:

select j.name, s.step_name, 
    CASE WHEN s.last_run_outcome=0 THEN 'Failed'
        WHEN s.last_run_outcome=1 THEN 'Success'
       WHEN s.last_run_outcome=2 THEN 'Retry'
      WHEN s.last_run_outcome=3 THEN 'Canceled'
    END
,h.run_date, s.output_file_name
from msdb.dbo.sysjobsteps s
inner join msdb.dbo.sysjobs j on s.job_id=j.job_id
inner join msdb.dbo.sysjobhistory h
on h.job_id=j.job_id or s.step_id=h.step_id
--where j.name  like '%Dem%'
order by h.run_date, j.name

感谢@BaconBits和任何人提供任何进一步的帮助。

0 个答案:

没有答案