如何通过查询或命令查看Integration Services中正在运行的包

解决方案
SSMS中SSIS对象下展示的运行包数据全部存储在SSISDB系统数据库的内置视图中,你可以直接执行以下查询得到完全一致的结果:
查询当前正在运行的SSIS包(和SSMS实时视图完全匹配)
USE SSISDB GO SELECT e.execution_id 执行ID, e.folder_name 文件夹名称, e.project_name 项目名称, e.package_name 包名称, e.status_desc 运行状态, e.start_time 开始时间, e.executed_by_name 执行账号, e.server_name 运行服务器, e.total_physical_memory_kb 占用物理内存(KB) FROM catalog.executions e -- 状态值2对应运行中、5对应挂起,均为SSMS视图默认展示的活跃运行包 WHERE e.status IN (2,5) ORDER BY e.start_time DESC
状态值说明
你可以修改WHERE条件中的status值筛选不同执行状态的包:
- 1 = 执行已创建
- 2 = 正在运行
- 3 = 已取消
- 4 = 执行失败
- 5 = 执行挂起
- 6 = 执行成功结束
- 7 = 执行失败结束
- 8 = 正在停止
- 9 = 执行完成
查询包含代理作业关联信息的运行包
如果需要查看通过SQL Server代理执行的包对应的作业信息,可使用以下关联查询:
USE SSISDB GO SELECT e.execution_id 执行ID, e.folder_name 文件夹, e.project_name 项目, e.package_name 包名, j.name 关联代理作业名, js.step_name 作业步骤名, e.status_desc 状态, e.start_time 开始时间, e.executed_by_name 执行人 FROM catalog.executions e LEFT JOIN msdb.dbo.sysjobactivity ja ON ja.job_history_id = e.job_id LEFT JOIN msdb.dbo.sysjobs j ON j.job_id = ja.job_id LEFT JOIN msdb.dbo.sysjobsteps js ON js.job_id = j.job_id AND js.step_id = ja.step_id WHERE e.status IN (2,5) ORDER BY e.start_time DESC
内容的提问来源于stack exchange,提问作者Ivan utama
相关产品推荐
相关产品推荐

