有没有办法 link SQL 代理作业步骤将包调用回其在 SSISDB 中的包记录?

Is there a way to link a SQL Agent Job step that calls a package back to its package record in SSISDB?

我正在围绕我们的 SQL 代理作业构建一些报告,其中很多都从 Integration Services 目录中调用数据包。当作业的一个步骤调用一个包时,我想知道该包是否在作业步骤中被其 SSISDB package_id 或其 package_guid?

以某种方式引用

如果不是,是否有任何其他已知方法可以导出 package_id 或 package_guid?

我仔细查看了 Microsoft 的文档,但找不到我要查找的内容。

当然,我正在查看 sysjobstep table。虽然我可以在命令列中看到正在调用的包的名称,但据我所知,它并没有通过任何类型的 ID 引用包。 (它还包括一堆其他的东西,比如我的 SSIS 项目参数值)

相信名字是我们必须继续的,而不是你想听到的。当我寻找包装参考时,我会保留它。

select 
    '------>' 'Job Information'
    ,a.job_id
    ,a.name
    ,a.description
    ,'------>' 'SSIS package Information' 
    ,b.name
    ,b.id
    ,b.description
    ,'------>' 'Job steps Information' 
    ,js.step_id
    ,js.step_name
    ,js.subsystem
    ,js.command
from  msdb.dbo.sysjobs  a 
left Join msdb.dbo.sysjobsteps js on js.job_id=a.job_id 
left join msdb.dbo.sysssispackages b on js.command like '%'+b.name + '%'

您必须解析 sysjobsteps table 中的 command 列。
以下 post 有一个很好的查询如何做到这一点: Using T-SQL to get the SSIS Package name, job name and description