【问题标题】:How to detect a SSIS package component type in SSISDB?如何在 SSISDB 中检测 SSIS 包组件类型?
【发布时间】:2020-02-12 09:10:52
【问题描述】:

我有一个 SQL,它有助于分析每个 SSIS 包组件的持续时间,它使用

  • SSISDB.catalog.executions
  • SSISDB.CATALOG.操作
  • SSISDB.CATALOG.event_messages

事实上,我无法从这些实体中的数据中理解event_messages.message_source_name 代表什么。我在包中只有它的名称和路径。 我需要了解每种组件类型:

  • SQL 脚本任务
  • 数据流
  • 序列容器
  • 循环容器
  • 等等

例如,我有一个包含 4 个组件的 SSIS 包(名称 =“Test”):

  1. 执行 Sql 任务(名称 =“开始”)
  2. 数据流任务(名称=“加载”)
  3. 脚本任务(名称 =“检查”)
  4. 执行 Sql 任务(名称 = “完成”)

查询 SSISDB 我想得到这样的东西

Package_name |Component_name | Component_type
Test         | Start         | Execute Sql Task
Test         | Load          | Data Flow Task 
Test         | Check         | Script Task
Test         | Finish        | Execute Sql Task

有可能吗?

【问题讨论】:

  • “您需要了解每种组件类型”是什么意思?就像它们是什么一样?我不明白你在这里真正问的是什么。
  • 我已经编辑了我的问题,提供了示例

标签: sql-server ssis sql-server-2017


【解决方案1】:

事实是,我无法从这些实体中的数据中理解 event_messages.message_source_name 代表什么。

它描述了在Name 属性中定义的对象名称,它生成了这条消息记录。与message_source_id 一起,它允许识别消息的来源。 IE。在您的情况下,它可以是包的名称或任务或容器或数据流的名称。
根据事件日志信息,只能区分以下对象:

  • 任务
  • 容器
  • 数据流任务

好消息 - 此表已按标准日志记录级别填充。

没有简单的方法可以从 SSISDB 获取组件类型。要获取组件类型,您需要分析包源代码。问题是它被加密存储在internal.packages 中。您可以使用catalog.get_project SSISDB 存储过程export 包含您感兴趣的包的整个项目,然后将其解压缩并读取引用包的 XML 源。通过使用message_source_id GUID,您可以识别 XML 中的任务并读取其类型。

【讨论】:

  • 谢谢您,我会等一些其他的答案,如果没有其他选项,将标记您的答案为正确。
【解决方案2】:

我认为你在看下面的视图:

catalog.execution_component_phases

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 

如果视图为空,则将包执行的日志记录级别设置为性能或详细。

更多信息:

https://docs.microsoft.com/en-us/sql/integration-services/system-views/catalog-execution-component-phases?view=sql-server-ver15

【讨论】:

  • 可惜了,这个视图好像是空的。
  • catalog.execution_component_phases 视图在包执行的日志级别设置为 Performance 或 Verbose 时提供此信息。
  • 好的,谢谢您的回答,这里只显示数据流信息。所以这将帮助我理解,什么包组件是数据流。其他组件类型呢?
猜你喜欢
  • 2018-05-08
  • 1970-01-01
  • 2020-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-17
相关资源
最近更新 更多