我们在日常任务(更新,ETL ......)中使用了不同的SSIS包,并且我们有一种复杂的结构,其中包调用不同的其他包。主要有大约10个主要工作称为辅助工作。因此,即使步骤失败,这10个工作也总是成功,因此它不会阻止其他执行。虽然我们希望通过SQL查询检索与这些作业相关的步骤(及其状态),但我们无法在步骤和调用作业之间进行连接,同时检索状态(步骤状态)在这种情况下而不是工作)。
我在网上搜索了很多,我总是找到一个脚本加入步骤并在没有状态或步骤和状态的情况下调用作业而不知道正在调用哪个作业......
所以总结一下,我们正在尝试查询我们可以加入工作,他们的状态和他们的父工作。
对此事的任何帮助都会非常感谢并提前感谢。
修改
感谢@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和任何人提供任何进一步的帮助。