sql-server - 如何在 SSISDB 中检测 SSIS 包组件类型?
问题描述
我有一个 SQL,它有助于分析每个 SSIS 包组件的持续时间,它使用
- SSISDB.catalog.executions
- SSISDB.CATALOG.操作
- SSISDB.CATALOG.event_messages
事实是,我无法从这些实体中的数据中理解它event_messages.message_source_name
代表什么。我在包中只有它的名称和路径。我需要了解每种组件类型:
- SQL 脚本任务
- 数据流
- 序列容器
- 循环容器
- 等等
例如,我有一个包含 4 个组件的 SSIS 包(名称 =“Test”):
- 执行 Sql 任务(名称 =“开始”)
- 数据流任务(名称=“加载”)
- 脚本任务(名称 = “检查”)
- 执行 Sql 任务 (name = "Finish")
并查询 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
可能吗?
解决方案
事实是,我无法从这些实体中的数据中理解 event_messages.message_source_name 代表什么。
它描述了在属性中定义的对象名称,Name
它生成了这个消息记录。与message_source_id
它一起允许识别消息的来源。即在您的情况下,它可以是包的名称或任务或容器或数据流的名称。
根据事件日志信息,只能区分以下对象:
- 包裹
- 任务
- 容器
- 数据流任务
好消息 - 此表以标准日志记录级别填充。
没有简单的方法可以从 SSISDB 获取组件类型。要获取组件类型,您需要分析包源代码。问题是它被加密存储在internal.packages
. 您可以使用 SSISDB 存储过程导出包含您感兴趣的包的整个项目catalog.get_project
,然后将其解压缩并读取引用包的 XML 源。通过使用message_source_id
GUID,您可以识别 XML 中的任务并读取其类型。
推荐阅读
- javascript - 一些 ReactNative 东西的困惑
- javascript - React:如何在不使用活动索引的情况下将实例传递给 onClick
- android - 需要依次发送多个 AndroidFastNetworking 请求
- python - 如何以随机顺序将数据帧写入 hdfs csv?
- reactjs - 为什么 React 中的 props 是只读的?
- c++ - 使用仅头文件库的 Cpp 编译技术
- python - 从现有的常规索引数据框创建多级索引数据框
- python - 不理解输出中带小数的字符串格式()方法
- android - 与从命令行运行相比,Android Studio 安装了我的 react-native 应用程序的不同版本
- php - 如何在wordpress网站的主页上隐藏页脚