[译]Stairway to Integration Services Level 6 - SSIS 工作流管理基础
简介
在之前的章节中,我们学习了增量载入数据. 本文中.我们通过优先约束(Precedence Constraints)来管理SSIS的工作流.
添加一个SSIS包

图 1
将新建的Package1.dtsx 改为 Precedence.dtsx :

图 3
添加 Script Task
拖个 Script Task 到Control Flow:

图 5
Script Task估计是SSIS 里面最强大的组件了.你可以创建很多功能. 同样的,你能通过Script Task 控制SSIS工作流.
右击Script Task 点 “Edit” :

图 6
点击General ,把Name 改为“Script Task 1”:

图 8
返回 Script 页面,然后点击 ReadOnlyVariables property:

图 9
点击省略号会显示一个变量列表 . 选择 “System::TaskName” 变量 :

图 10
点击确认以后, ReadOnlyVariables 属性显示如下:

图 11
点击 “Edit Script” 按钮打开脚本编辑页面图12:

图 12
拖动滚动轴,直到你看到 Sub Main(). 然后添加如下代码 ( 我喜欢用C#….所以我图片都会更新为C#的) :
Dim sTaskName As String = Dts.Variables("TaskName").Value.ToString
MsgBox(sTaskName & " completed.")

图 13
在SSIS中 变量有范围,并且归于某个namespaces. 每个SSIS变量都有个Namespace. 默认有两个namespace : System 和 User . TaskName 属于System namespace.
按F5来测试一下 :

图 14
添加第二个 Script Task
复制 Script Task 1 :

图 15
把复制了的 Script Task 1 1 改名为 “Script Task 2”:

图 16
再执行一下:

图 17
用例 0 和1
先前是一个简单用例. 示例了在没有优先约束的情况下,工作流会怎么运行. 我称之为用例 0 ( “Use Case 0”). 我们在Script Task 1 和 Script Task 2之间加个优先约束.看下用例 1 的情况. 优先约束是 Script Task1 延伸出来的一个绿色尖头. 如图 18 :

图 18
点击优先约束,然后拖到 Script Task 2:

图 19
再次执行 包, 如下图 Script Task 1 先执行 :

图 20
点击OK按钮以后, Script Task 1 完成执行,接着 Script Task 2 开始执行:

图 21
注意: Script Task2 是在Script Task 1 完成以后执行. 另外一个就是该优先约束默认的类型是”OnSuccess” . 也就是说. 只有成功执行Script Task 1之后,优先约束才会验证.
这点非常重要. 优先约束(originates) Script Task 1(originates) 终于 (terminates )Script Task 2. 优先约束起点为箭尾连接的任务,而箭头所指的任务为终点.
优先约束会验证一个或多个条件,如果条件为Ture 那么终端任务才会执行.
“单线程"
“单线程”就是一次执行一个东西. 使用优先约束可以在SSIS控制流中实现”单线程” . 优先约束是Control Flow中唯一设定确定工作流(deterministic workflow ) 执行顺序的方法 .
那么非确定的工作流( non-deterministic)可以在SSIS Control Flow设定么? 右击 Script Task 1 与 Script Task 2中间的优先约束,然后点击Delete.然后随意点击空白区域,按F4 调出属性(properties)面板. MaxConcurrentExecutables 用来设定当前SSIS Control Flow 可以同事执行多少个并发的任务 . 默认值是-1 . 默认的并发数量是CPU的核心数+2 .比如你有个4核CPU,那么同时可以执行6个任务.
我们把属性设为1 , 再次执行包的时候我们会看到,一次只执行了一个 Script Task :

图 22
原文连接 : http://www.sqlservercentral.com/articles/Integration+Services+(SSIS)/91649/
资源: My_First_SSIS_Project_After_Step_6.zip
[译]Stairway to Integration Services Level 6 - SSIS 工作流管理基础的更多相关文章
- [译]Stairway to Integration Services Level 8 - SSIS 工作流管理高级
介绍 在前两个章节我们,建立了一个新的SSIS包,简单的使用了一下scripting还有优先约束,并且测试了MaxConcurrentExecutables 属性. 同时实验了 “On Succe ...
- [译]Stairway to Integration Services Level 7 - SSIS 工作流管理中级
介绍 前一个章节我们对SSIS的优先约束做了初步了解,并且实验了MaxConcurrentExecutables 包属性的设置. 本文将测试“On Success”, “On Completion”, ...
- [译]Stairway to Integration Services Level 13 - SSIS 变量回顾
介绍 在前一篇中我们组合了已经学过的事件冒泡 event bubbling, 日志记录 logging, 和父子模型 Parent-Child pattern 建立了自定义的SSIS包日志记录. 本文 ...
- [译]Stairway to Integration Services Level 15 – SSIS 参数回顾
介绍 在本文中我们会研究SSIS变量姐妹: SSIS 变量. 我们会演示参数配置,通过包参数管理动态属性值,然后会演示SSIS包执行的时候参数怎么被配置的. SSIS Parameters 101 S ...
- [译]Stairway to Integration Services Level 16 – Flexible Source Locations (多文件导入)
介绍 在本文中我们将利用SSIS参数,变量 以及 Foreach Loop Container 从多个源动态导入数据. 开始前我们先下载一些数据.WeatherData_Dec08_Apr09.zip ...
- [译]Stairway to Integration Services Level 12 - 高级日志配置
介绍 本文中,我们将结合之前学习的时间冒泡,日志记录,以及复制模型.建立一个自定义的SSIS包日志模型. SSIS Task事件回顾 Reviewing SSIS Task Events 在做实 ...
- [译]Stairway to Integration Services Level 9 - Control Flow Task Errors
介绍 在本文中,我们会实验 MaximumErrorCount和ForceExecutioResult 故障容差属性,并且还要学习Control Flow task errors, event han ...
- [译]Stairway to Integration Services Level 18 – 部署和执行
介绍 在本文中,我们要创建一个SSIS Catalog 实例,部署我们的项目,并且运行 weather data loader 包. SSIS 2012 部署模型 SSIS 2012 Deploy ...
- [译]Stairway to Integration Services Level 11 - 日志配置
介绍 在前一个章节我们讨论了事先行为,分享了如何操作默认的行为和时间冒泡,并且介绍了父子模型. 本文中,我们会配置SSIS日志. 进行简单及高级日志配置,存储,和检索的实验.并且生成自定义日志信息. ...
随机推荐
- android netty5.0 编译时 java.lang.NoClassDefFoundError: io.netty.channel.nio.NioEventLoopGroup
android netty5.0 编译时 java.lang.NoClassDefFoundError: io.netty.channel.nio.NioEventLoopGroup 复制netty包 ...
- Gulp 从0开始
http://www.w3ctech.com/topic/134 (该文章有很多错误) http://markpop.github.io/2014/09/17/Gulp%E5%85%A5%E9%97 ...
- 未能从程序集“System.ServiceModel, Version=3.0.0.0”中加载类型“System.ServiceModel.Activation.HttpModule” 的解决办法
未能从程序集“System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”中加载类型“ ...
- oracle服务器和客户端字符集的查看和修改
一.什么是oracle字符集 Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系.ORACLE 支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索数据.它使数据库 ...
- JWPlayer 初探
http://www.360doc.com/content/13/0103/22/21412_258041878.shtml JWPlayer 是一款比较实用的web flash 播放器
- C、C++中引用与指针的区别
1:引用的和指针在概念上的区别 引用是变量的别名,例如 int m; int &n=m; 引用作为一个别名.它在逻辑上不是独立的,它的存在具有依附性,所以引用必须在一开始就被初始化,而且其引用 ...
- 关于oracle spfile配置文件问题
$ORACLE_SID决定spfile dbs 默认 在启动Oracle数据库时报错,如下: [oracle@localhost ~]$ sqlplus / as sysdba SQL*Plus: R ...
- josscrowcroft / Simple-JavaScript-DOM-Inspector
josscrowcroft / Simple-JavaScript-DOM-Inspector josscrowcroft / Simple-JavaScript-DOM-Inspector
- 我的MYSQL学习心得 备份和恢复(详细)
备份 逻辑备份方法 使用MYSQLDUMP命令备份 MYSQLDUMP是MYSQL提供的一个非常有用的数据库备份工具.mysqldump命令执行时将数据库备份成一个文本文件, 该文件中实际上包含了多个 ...
- Android开发_SQLite使用方法技巧
SQLite介绍 SQLite是轻量级的.嵌入式的.关系型数据库,目前已经在iPhone.Android等手机系统中使用,SQLite可移植性好,很容易使用,很小,高效而且可靠.SQLite嵌入到使用 ...