容器(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的更多相关文章

  1. 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 ...

  2. SSISDB1:使用SSISDB管理SSIS Projects

    使用Project Deployment Model,将SSIS Project部署到Integration Services Catalog之后,SSISDB负责管理SSIS Project.在SS ...

  3. EventBus详解

    EventBus详解 简介 github原文 EventBus... * simplifies the communication between components - decouples eve ...

  4. SSISDB8:查看SSISDB记录Package执行的消息

    在执行Package时,SSISDB都会创建唯一的OperationID 和 ExecutionID,标识对package执行的操作和执行实例(Execution Instance),并记录opera ...

  5. flex中Event类的使用

    当您创建自己的自定义 Event 类时,必须覆盖继承的 Event.clone() 方法,以复制自定义类的属性.如果您未设置在事件子类中添加的所有属性,则当侦听器处理重新分派的事件时,这些属性将不会有 ...

  6. Event的Propagate

    SSIS Package的Executable存在层次结构,例如Package位于层次结构的最顶层,Root Level:Container是其中包含的Executable(Task 或 Contai ...

  7. Azure Event Hub 技术研究系列3-Event Hub接收事件

    上篇博文中,我们通过编程的方式介绍了如何将事件消息发送到Azure Event Hub: Azure Event Hub 技术研究系列2-发送事件到Event Hub 本篇文章中,我们继续:从Even ...

  8. Event对象和触发

    1.构造: //非IE浏览器事件构造方法 var event = document.createEvent('HTMLEvents');//'HTMLEvents'自定义事件名 //IE浏览器构造方法 ...

  9. google event

    一目了然,也不用多说了,随便记录下,内部实现基于观察者模式 TestEvent public class TestEvent { private final int message; public T ...

随机推荐

  1. 矩阵快速幂 HDU 4565 So Easy!(简单?才怪!)

    题目链接 题意: 思路: 直接拿别人的图,自己写太麻烦了~ 然后就可以用矩阵快速幂套模板求递推式啦~ 另外: 这题想不到或者不会矩阵快速幂,根本没法做,还是2013年长沙邀请赛水题,也是2008年Go ...

  2. 浅谈CSS hack(浏览器兼容)

    今天简单写一点关于浏览器兼容的处理方法,虽然百度上已经有很多,但是我还是要写! 先看一个图 这个图描述了2016年1月至8月网民们所使用的浏览器市场份额(来源:http://tongji.baidu. ...

  3. Codeforces Round #258 (Div. 2)

    A - Game With Sticks 题目的意思: n个水平条,m个竖直条,组成网格,每次删除交点所在的行和列,两个人轮流删除,直到最后没有交点为止,最后不能再删除的人将输掉 解题思路: 每次删除 ...

  4. EF DbContext 并发执行时可能出现的问题

    现在许多Web项目都使用了IOC的DI注入组件.其中对象的生命周期管理是非常重要的. 有时我们为了提高请求的响应,经常在请求线程中执行多个子线程,然而忽略了EF的DbContext的生命周期管理. D ...

  5. canvas小结

    前段时间在公司没什么事干,研究了一下canvas,在实际开发中还没正式应用过,但是已经深深感觉到其魅力之处.下面写一写我认为canvas中比较重要的点,如有理解错误,欢迎指正. 首先canvas是h5 ...

  6. 懒加载lazyload

    什么是懒加载 懒加载就是当你做滚动到页面某个位置,然后再显示当前位置的图片,这样做可以减少页面请求. 懒加载:主要目的是作为服务器前端的优化,减少请求数或延迟请求数,一些图片非常多的网站中非常有用,在 ...

  7. appium的几点总结

    原文链接:http://blog.csdn.net/bear_w/article/details/50345283 1. 建立session时常用命令: DesiredCapabilities cap ...

  8. 转载——CSS3 Object-fit和Object-position

    在响应式设计(RWD)中,令大家最头痛的问题的是图片的自适应处理问题.往往我采取的处理方式是给图片的容器设置一个尺寸,然后给图片设置下面的代码: img { max-width: 100%; heig ...

  9. Linux Shell 编程中的特殊符号

    一.井号 # 1.在脚本文件中对一行进行注释. 2.在引号和\符号后不是注释,只是#号本身: echo "12 # hehe" echo '12 # hehe' echo 12 \ ...

  10. asp.net mvc引用控制台应用程序exe

    起因:有一个控制台应用程序和一个web程序,web程序想使用exe程序的方法,这个时候就需要引用exe程序. 报错:使用web程序,引用exe程序 ,vs调试没有问题,但是部署到iis就报错,如下: ...