SSISDB7:查看当前正在运行的Package

在项目组中做ETL开发时,经常会被问到:“现在ETL正在跑哪一个Package?”

为了缩短ETL运行的时间,在ETL的设计上,经常会使用并发执行模式:Task 并发执行,Package并发执行。对于Package 并发执行模式,实现方式是:在SSIS Server上部署Package Job,每个Job Step执行一个Package Manager,该Package Manager以并发方式调用Execute Package Task,因此,在同一时间存在多个Child packages同时运行,并发执行的Executable的最大值是CPU的数量。在job运行的过程中,如何查看正在运行的Package? 由于任何一个Package在执行时,SSIS都会记录其Executable(Task,container)执行过程产生的历史消息,因此,可以通过Package记录的operation message 和 executable name来判断当前正在运行的Package。

SSIS Engine使用SSISDB的catalog.operation_messages视图,记录每个Package在执行过程中产生的历史消息;使用catalog.operations记录对Package的operation,主要是project的部署,package执行和history的cleanup。

1,查看正在运行的operation

Integration Service Catalogs中Package执行的任何操作,都会记录在 catalog.operations 视图中,该视图的关键Columns:

  • operation_type:operation_type=200  表示 create_execution and start_execution
  • Status:The status of the operation. The possible values are created (1), running (2), canceled (3), failed (4), pending (5), ended unexpectedly (6), succeeded (7), stopping (8), and completed (9).
  • object_type:The type of object affected by the operation. The object may be a folder (10), project (20), package (30), environment (40), or instance of execution (50).

查看当前正在运行的Operation的脚本是

select top 11
    op.operation_id,
    opt.operation_type_descr,
    op.created_time,
    obt.object_type_descr as object_affected,
    op.object_id,
    op.object_name,
    ops.operation_status_descr as status,
    op.start_time,
    op.end_time,
    op.caller_name
from catalog.operations op with(nolock)
inner join helper.OperationType opt with(nolock)
    on op.operation_type=opt.operation_type
inner join helper.ObjectType obt with(nolock)
    on op.object_type=obt.object_type
inner join helper.OperationStatus ops with(nolock)
    on op.status=ops.operation_status
where op.operation_type=200  --create_execution and start_execution(200)
and op.object_type=20        -- project (20)
and op.status in(2,5)        -- running (2), pending (5)
order by op.created_time desc

2,查看SSIS Engine 记录的Operation Message

SSIS Engine是根据触发事件(Event)来记录Operation Message的,从message_type_descr能够查看消息的 Event 类型,从message_source_descr中能够看到触发事件的Task 类型:Control Flow tasks 或 Data Flow task。

This view displays a row for each message that is logged during an operation in the catalog. The message can be generated by the server, by the package execution process, or by the execution engine.

select top 111
    om.message,
    om.message_time,
    mt.message_type_descr,
    mst.message_source_descr
from catalog.operation_messages om with(nolock)
inner join helper.MessageType mt with(nolock)
    on om.message_type=mt.message_type
inner join helper.MessageSourceType mst with(nolock)
    on om.message_source_type=mst.message_source_type
where om.operation_id=104627
order by om.message_time desc

Message字段提供的信息非常详细,格式大概是:Task组件名称+事件名称+其他,通过组件名称,推测正在运行的Package和组件。如果Task 组件的名称具有代表性,就能很容易推断出正在运行的package 和 package中正在运行的task。

3,helper 辅助表

关于helper 辅助表,请参考《SSISDB6:Operation》的Appendix

参考doc:

catalog.operation_messages (SSISDB Database)

catalog.operations (SSISDB Database)

时间: 2024-07-31 09:09:38

SSISDB7:查看当前正在运行的Package的相关文章

SSISDB7:当前正在运行的Package及其Executable

PM问:"Vic,现在ETL Job跑到哪一个Package了,正在执行哪个Task?",第一次遇到这个问题时,一下就懵逼了,只能硬着头皮说:"我看看". 在做项目开发时,这个问题很常见,但是,被很多ETL开发工程师忽略了,可能是因为,这不是一个直接可以给出答案的命题. 在做大数据处理时,ETL Package开发工程师经常会用到管理者模式(Manager Mode)设计Package,也就是说,管理者Package调用子Package,通过优先约束控制子Packa

java笔记--关于多线程如何查看JVM中运行的线程

查看JVM中的线程 --如果朋友您想转载本文章请注明转载地址"http://www.cnblogs.com/XHJT/p/3890280.html "谢谢-- ThreadGroup(线程组)1.一个线程的集合,也可包含其他线程组2.线程组构成一棵树,除了初始化线程组外,每一个线程组都有一个父线程组3.允许线程访问有关自己的线程组的信息,但不能访问其父线程组或其他线程组的信息 常用方法:activeCount() 返回线程组中活动线程的估计数activeGroupCount() 返回线

通过Adb 查看当前正在运行的Activity.

extends:http://www.cnblogs.com/tt_mc/p/4269833.html adb shell dumpsys activity activities | sed -En -e '/Running activities/,/Run #0/p' 通过Adb 查看当前正在运行的Activity.

在Linux中查看所有正在运行的进程

可以使用ps命令.它能显示当前运行中进程的相关信息,包括进程的PID.Linux和UNIX都支持ps命令,显示所有运行中进程的相关信息. ps命令能提供一份当前进程的快照.如果想状态可以自动刷新,可以使用top命令. ps命令 输入下面的ps命令,显示所有运行中的进程: 1 # ps aux | less 其中, -A:显示所有进程 a:显示终端中包括其它用户的所有进程 x:显示无控制终端的进程 任务:查看系统中的每个进程. 1 2 # ps -A # ps -e 任务:查看非root运行的进程

如何通过web查看job的运行情况

当我们将作业提交到hadoop 的集群上之后,我们会发现一个问题就是无法通过web查看job运行情况,比如启动了多少个map任务,启动多少个reduce任务啊,分配多少个conbiner等等.这些信息都是作业在运行是可以查看的.而我的想要的就是能够通过远程的web可以查看到作业job的运行情况,以及它的详细信息.下面介绍一下查看的方式: 1.当你提交作业时,我们首先通过命令行的方式提交作业后,我们可以打开Yarn的web界面,如下图所示: 在这个页面上可以看到作业的提交情况,若你提交作业之后会出

查看yarn当前运行任务列表

Author: kwu 查看yarn当前运行任务列表,可使用如下命令查看: yarn application -list 如需杀死当前某个作业,使用kill application-id的命令如下: yarn application -kill application_1437456051228_1725 版权声明:本文为博主原创文章,未经博主允许不得转载.

linux 下查看一个进程运行路径

在linux下查看进程大家都会想到用 ps -ef|grep XXX 可是看到的不是全路径,怎么看全路径呢? 每个进程启动之后在 /proc下面有一个于pid对应的路径 例如:ps -ef|grep python 显示:oracle    4431  4366  0 18:56 pts/2    00:00:00 python Server.py 4431就是进程号 到/proc/4431下,ls -l 会看到(需要root权限): 总用量 0 -r--r--r--    1 oracle  

如何在Linux中查看所有正在运行的进程(ps)

你可以使用ps命令.它能显示当前运行中进程的相关信息,包括进程的PID.Linux和UNIX都支持ps命令,显示所有运行中进程的相关信息.ps命令能提供一份当前进程的快照.如果你想状态可以自动刷新,可以使用top命令. ps命令 输入下面的ps命令,显示所有运行中的进程: # ps aux | less 其中, -A:显示所有进程 a:显示终端中包括其它用户的所有进程 x:显示无控制终端的进程 任务:查看系统中的每个进程. # ps -A # ps -e 任务:查看非root运行的进程 # ps

如何在命令提示符下编译运行含有Package的java文件

这篇是大二自学Java的时候记下的笔记,中午回顾印象笔记的时候意外看到了这篇.看到多年前写下的文字,我想起那时候我对Java的懵懵懂懂,每天晚上在图书馆照着书写书上的示例代码,为一个中文分号绞尽脑汁,为命令提示符上打印出的图案而兴奋.到现在我依然觉得,一个从没有过编程经验的人在屏幕上打印出Hello World 的时候,他真的感觉是对一个全新的世界说了句"你好,我来了". 尽管现在来看那时候遇到的问题现在看来真的是很简单,甚至可以说是很蠢的,但我依然感激当初那个再图书馆写代码的自己.正