使用Event Message 对 Package 进行Troubleshoot
容器(Container)是控制流的特殊的任务(Task),它为一个或多个Task提供逻辑组合,可以实现工作流的重复执行和顺序执行,还可以把变量和事件处理程序的作用域缩小到容器中。不能在容器内的Task和容器外的Task之间创建优先约束,一旦把Task存放到容器内,那么只能创建容器的优先约束。SSIS包含四种类型的容器:任务宿主容器,序列容器,For循环容器和Foreach循环容器。任务宿主容器是默认容器,每个Task默认都属于该容器,并只能在SSIS后台使用。
一,序列容器
序列容器负责处理容器内的工作流,并能把Package划分为更容易管理的分组,一般来说,使用容器来实现:
- 序列容器可以把变量的作用域缩小到容器内;
- 在单个容器内创建事件处理程序,如果容器内的任何Task失败,可以触发事件处理程序;
- 确保在执行下一个Task之前,容器内的多个Task被成功执行。
容器内的Task可以单独执行,这使得容器很像一个子Package。
二,For容器
For循环容器类似于编程语言中的For循环结构,在循环开始前,For容器计算一个初始值,并评估(Evaluate)初始值是否满足条件,如果满足条件,开始第一轮循环。
进入后续的循环时,For容器都计算一个迭代变量,并评估(Evaluate)迭代变量的值是否满足条件,如果满足条件,继续循环;如果不满足条件,结束循环。
For循环容器的循环属性:
- InitExpression :提供初始化该循环所用值的表达式(可选),该属性会覆盖变量的初始值。
- EvalExpression :提供用于计算循环应停止还是继续的表达式。
- AssignExpression :提供在每次循环重复时更改条件的表达式(可选)。
在使用For循环容器之前,需要创建用于迭代的变量,而迭代变量的初始值,可以通过变量来赋值,也可以通过InitExpression 属性来赋值:

设置For 循环容器的属性,设置迭代变量的初始值,评估表达式和更新循环条件:

For循环容器内的Task可以修改迭代变量的值。
三,Foreach循环容器
Foreach循环容器是一种功能强大的循环结构,其循环的实现类似于编程语言中的Foreach循环结构,用于遍历一个对象集合。
Foreach循环容器有8种枚举器,分别是:
- Foreach File Enumerator
- Foreach Item Enumerator
- Foreach ADO Enumerator
- Foreach ADO.NET Schema Rowset Enumerator
- Foreach From Variable Enumerator
- Foreach NodeList Enumerator
- Foreach SMO Enumerator
常用的枚举器是前三个,通过这些枚举器,用户可以遍历集合的所有元素,通过Foreach循环容器获取的是集合中的元素。用于可以通过Foreach循环编辑器来设置枚举器的类型:

下文逐个介绍常用的枚举器及其用法。
1,遍历文件
当需要遍历指定目录下的所有文件时,可以选择Foreach File Enumerator,配置枚举器
- Folder:用于指定遍历目录的路径,
- Files:用于指定文件名的模式,* 表示任意字符
- Retrieve file name:用于指定获取的文件名的格式
- Traverse subfolders:是否遍历子目录

配置完枚举器之后,需要在变量映射中,设置变量来接收每一次循环获取的文件名称:

Foreach循环容器会遍历目录 D:\ShareFolder 中的所有txt文件,然后,把获取的文件名赋值给变量User::FileName。
2,遍历列表
当需要遍历特定集合中的所有子项时,可以选择Foreach Item Enumerator枚举器,通过Columns按钮定义枚举器的列和数据类型:

在枚举器配置界面,输入集合的元素:

设置变量来接收枚举器中的元素:

3,遍历ADO集合对象
SSIS使用Execute SQL Task来返回ADO集合对象,然后使用Foreach ADO Enumerator枚举器来遍历集合中的所有元素。
首先,创建Object类型的变量:

其次,配置Execute SQL Task,设置Execute SQL Task返回的结果集,类型为Full result set,

设置接收结果集的变量,也就是建立结果集和变量之间的映射:

最后,配置Foreach循环容器,设置ADO枚举器的源是Object类型的变量:

在枚举器中建立枚举器的返回值和变量之间的映射,用于接收ADO对象中的行,Index代表列的序号,0代表第一列。

四,组
实际上,组并不是容器,而仅仅是把Task集合到一起,组用于对Task进行UI上的分割,以满足审美需要。
使用Event Message 对 Package 进行Troubleshoot的更多相关文章
- How to Distinguish a Physical Disk Device from an Event Message
https://support.microsoft.com/en-us/help/159865 https://support.microsoft.com/en-us/help/244780/inf ...
- SSISDB1:使用SSISDB管理SSIS Projects
使用Project Deployment Model,将SSIS Project部署到Integration Services Catalog之后,SSISDB负责管理SSIS Project.在SS ...
- EventBus详解
EventBus详解 简介 github原文 EventBus... * simplifies the communication between components - decouples eve ...
- SSISDB8:查看SSISDB记录Package执行的消息
在执行Package时,SSISDB都会创建唯一的OperationID 和 ExecutionID,标识对package执行的操作和执行实例(Execution Instance),并记录opera ...
- flex中Event类的使用
当您创建自己的自定义 Event 类时,必须覆盖继承的 Event.clone() 方法,以复制自定义类的属性.如果您未设置在事件子类中添加的所有属性,则当侦听器处理重新分派的事件时,这些属性将不会有 ...
- Event的Propagate
SSIS Package的Executable存在层次结构,例如Package位于层次结构的最顶层,Root Level:Container是其中包含的Executable(Task 或 Contai ...
- Azure Event Hub 技术研究系列3-Event Hub接收事件
上篇博文中,我们通过编程的方式介绍了如何将事件消息发送到Azure Event Hub: Azure Event Hub 技术研究系列2-发送事件到Event Hub 本篇文章中,我们继续:从Even ...
- Event对象和触发
1.构造: //非IE浏览器事件构造方法 var event = document.createEvent('HTMLEvents');//'HTMLEvents'自定义事件名 //IE浏览器构造方法 ...
- google event
一目了然,也不用多说了,随便记录下,内部实现基于观察者模式 TestEvent public class TestEvent { private final int message; public T ...
随机推荐
- 关于XML中:XmlNode和XmlElement的涵义及不同之处
今天学习XML,遇到XmlNode和XmlElement俩个类,故有了下文的所述: 今天在做ASP.NET操作XML文档的过程中,发现了两个类:XmlNode和XmlElement.这两个类的功能极其 ...
- Git 基本概念及常用命令
一.基本概念 文件的三种状态:(任何一个文件在git中都有以下三种状态) 1) 已提交(committed):表示该文件已经被安全地保存在本地数据库中了. 2) 已修改(modified):表示修改了 ...
- 苹果safari浏览器window.open问题
现象:在做项目的过程中,使用window.open打开新窗口,在windows系统的ie,firefox,chrome浏览器上测试均没有问题,在苹果系统的safari浏览器上发现有些window.op ...
- Thinkphp3.2.3路径书写注意
尽量不要这样写: ./public/img/a.jpg 应该这样写:__PUBLIC__/img/a.jpg 不然会引起不兼容 如首页地址 http://192.168.1.100/rjshop/时
- 解决弹出的窗口window.open会被浏览器阻止的问题
问题现象 最近在做项目的时候碰到了使用window.open被浏览器拦截的情况,有时候会一直连接,有时候会偶尔拦截, 尝试了很多方法,走了很多弯路,总结一下结果分享大家 原因分析&深入研究 1 ...
- jQuery的4种事件绑定方法
jQuery中提供了四种绑定事件的方法,分别是bind.live.delegate.on,对应的解除监听的函数分别是unbind.die.undelegate.off: 一.on()方法(首选方法) ...
- 浏览器兼容性-JS篇
总结一下平时遇到的浏览器兼容性问题,本篇关于JS. 1.事件绑定 兼容写法: function add(obj,event){ if (obj.addEventListener) { obj.addE ...
- 05.DOM
DOM基础 什么是DOM 标签元素节点浏览器支持情况 火狐支持最好 谷歌其次 ie最差 尤其是ie6-8DOM节点节点分为:元素节点和文本节点 测试节点的类型用nodeTypenodeType 为3 ...
- if [ "$变量1"x = "$变量2"x ]中x的含义
问题:if [ "$变量1"x = "$变量2"x ]中x的含义是? 答:“x”字符可以为任意字符,用于防止变量为空时,某些版本的bash中会产生错误: 在一个 ...
- #iOS问题记录#动态Html加载本地CSS和JS文件
所谓动态Html,指代码中组合生成的html字符串: 若需要加载本地CSS,图片,JS文件,则, 1,需要文件的全路径: 2,需要"file:///"标志: 例如: //获取文件全 ...