【问题标题】:SSIS 2012 - Package Task Run Time StatusSSIS 2012 - 包任务运行时状态
【发布时间】:2019-05-05 14:15:33
【问题描述】:

在表 [catalog].[execution_component_phases] 中有一个列称为 阶段。 Phase 列的值是:

  • 预执行
  • 验证
  • 流程输入
  • 释放连接
  • 获取连接。

有人可以建议哪个值在说特定任务 包处于运行状态。

是否有任何值表明任务已启动但尚未完成。

问候

【问题讨论】:

    标签: sql-server ssis etl ssis-2012


    【解决方案1】:

    基于[catalog].[execution_component_phases]表的官方文档:

    显示数据流组件在每个执行阶段所花费的时间。

    此视图为数据流组件的每个执行阶段显示一行,例如 Validate、Pre-Execute、Post-Execute、PrimeOutput 和 ProcessInput。每行显示特定执行阶段的开始和结束时间。

    根据我的经验,我可以假设执行阶段的顺序是:

    1. AcquireConnection : 获取所需的相关连接
    2. 验证:验证任务/组件
    3. 预执行
    4. ProcessInput:处理阶段
    5. PrimeOutput:生成输出
    6. 执行后
    7. ReleaseConnection : 释放获取的连接

    在官方文档中,他们提供了以下查询来读取每个阶段花费的时间:

    use SSISDB  
    select package_name, task_name, subcomponent_name, execution_path,  
        SUM(DATEDIFF(ms,start_time,end_time)) as active_time,  
        DATEDIFF(ms,min(start_time), max(end_time)) as total_time  
    from catalog.execution_component_phases  
    where execution_id = 1841  
    group by package_name, task_name, subcomponent_name, execution_path  
    order by package_name, task_name, subcomponent_name, execution_path
    

    基于以上信息,您可以(例如)检查当前任务阶段是否仍在运行。

    参考文献

    【讨论】:

    • 谢谢,所以如果任务仍在运行,结束时间为 NULL 对吗?请建议
    • @TULSI 是的,end_time 是阶段结束的时间
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-02
    • 2023-03-22
    相关资源
    最近更新 更多