利用SSIS的ForcedExecutionResult 属性 和CheckPoint调试Package
1,ForcedExecutionResult
强制一个package或task执行的结果,共有四种值 None,Success,Failure,Completion,默认值是None,表示不强制返回值。
如果设置ForcedExecutionResult=Success,不管package执行过程中是否出现异常,package执行的结果都是Success。
The default value of this property is None, which indicates that the container does not force its execution outcome.You can use the ForceExecutionResult property on a task or container to test the use of checkpoints in a package. By setting ForceExecutionResult of the task or container to Failure, you can imitate real-time failure. When you rerun the package, failed task and containers will be rerun.
2,如果一个Package design比较复杂,在调试的时候,会很头疼,每次都从头开始执行package显然比较耗时,可以利用SSIS的CheckPoint功能,从Package的错误点restart;如果某一个Task执行速度十分慢,但每次都能执行成功,当对这个task tune performance时,如何调试更有效率。使用Task的ForcedExecutionResult属性,设置ForcedExecutionResult=Failure,强制Task返回Failure。那么Restart时,就会从该Task开始执行。
示例,利用Task的ForcedExecutionResult属性和CheckPoint进行调试
Step1,创建测试表格和Control Flow design
CREATE TABLE [dbo].[ptest]
(
[id] [int] IDENTITY(1,1) NOT NULL,
[code] [int] NOT NULL,
CONSTRAINT [pk_ptest] PRIMARY KEY NONCLUSTERED
(
[id] ASC
)
)

Task insert1,Insert2,Insert3的Sql Statement分别是
--Task Insert1
insert into dbo.ptest(code)
values(1) --Task Insert2
insert into dbo.ptest(code)
values() --Task Insert3
insert into dbo.ptest(code)
values(3)
Step2,开启package的CheckPoint机制,并设置三个Execute Sql Task 的FailPackageOnFailure=true.


Step3,将Task Insert2的ForcedExecutionResult设置为Failure,执行Package,查看执行情况



Task Insert2 已经执行完成“100 percent complete”,查看数据库中的数据,sql语句正确执行,但是由于Task Insert2设置属性ForcedExecutionResult=Failure,即使执行成功,Task也会强制返回Failure。

step4,不做任何修改,重新执行package,查看执行情况



Step5,利用强大的Express属性动态设置组件的属性值
在调试组件的过程中,逐个修改ForcedExecutionResult的值,显得十分繁琐,可以利用组件的Expression来动态设置ForcedExecutionResult的值。
创建一个变量varForcedExecutionResult,DataType是Int32,初始化值为1。
ForcedExecutionResult的各个选项对应的整数值如下
-1=None
0=Success
1=Failure
2=Completion

修改Task Insert2的属性ForcedExecutionResult=None,并配置Expressions,设置ForcedExecutionResult=@[User::varForcedExecutionResult],Task Insert2的UI上面添加一个fx图标。


Step6,重新执行Package,查看执行情况

CheckPoint文件的内容中含有DTS:Variable section,package在restart时,会加载这些变量的值,如果变量的值在restart之前,在package中被修改,那么restart package时,SSIS只会加载CheckPoint文件中记录的变量值,而忽略Package中变量的初始值。
可以修改CheckPoint中变量的值,使Restart package时加载更新之后的变量值。
<DTS:Checkpoint xmlns:DTS="www.microsoft.com/SqlServer/Dts" DTS:PackageID="{DB02D0B1-82E5-45D8-AA94-5655572C5DF8}">
<DTS:Variables DTS:ContID="{DB02D0B1-82E5-45D8-AA94-5655572C5DF8}">
<DTS:Variable DTS:Namespace="User" DTS:IncludeInDebugDump="2345" DTS:ObjectName="varForcedExecutionResult" DTS:DTSID="{552910BC-B814-4B8B-8014-3E19997AD4ED}" DTS:CreationName="">
<DTS:VariableValue DTS:DataType="3">1</DTS:VariableValue>
</DTS:Variable>
</DTS:Variables>
<DTS:Container DTS:ContID="{BE14E7B0-21EC-4C23-922B-1240C9AC5C83}" DTS:Result="0" DTS:PrecedenceMap=""/>
</DTS:Checkpoint>
Step7,修改变量varForcedExecutionResult的初始值为-1,重新执行package,查看执行情况

原因是单纯的修改Package中的变量值,不修改CheckPoint文件中变量的值,Package只会加载CheckPoint文件中变量的值。

Step8,修改CheckPoint中变量的值,<DTS:VariableValue DTS:DataType="3">-1</DTS:VariableValue>,重新执行package,查看执行情况
<DTS:Checkpoint xmlns:DTS="www.microsoft.com/SqlServer/Dts" DTS:PackageID="{DB02D0B1-82E5-45D8-AA94-5655572C5DF8}">
<DTS:Variables DTS:ContID="{DB02D0B1-82E5-45D8-AA94-5655572C5DF8}">
<DTS:Variable DTS:Namespace="User" DTS:IncludeInDebugDump="2345" DTS:ObjectName="varForcedExecutionResult" DTS:DTSID="{552910BC-B814-4B8B-8014-3E19997AD4ED}" DTS:CreationName="">
<DTS:VariableValue DTS:DataType="3">-1</DTS:VariableValue>
</DTS:Variable>
</DTS:Variables>
<DTS:Container DTS:ContID="{BE14E7B0-21EC-4C23-922B-1240C9AC5C83}" DTS:Result="0" DTS:PrecedenceMap=""/>
</DTS:Checkpoint>

利用SSIS的ForcedExecutionResult 属性 和CheckPoint调试Package的更多相关文章
- 解决SSIS中的脚本任务无法调试的问题
开发环境:操作系统环境为Win7 64Bit,数据库为SQLServer2008R2 问题现象:在SSIS的项目工程中,新建Package包,新建脚本任务,编写脚本程序以后,设置断点无法调试(Debu ...
- 利用ChromeCROSS可以在chrome浏览器上调试跨域代码
利用ChromeCROSS可以在chrome浏览器上调试跨域代码 1.下载ChromeCROSS文件,可百度下载,或者在我的百度云上下载:链接: https://pan.baidu.com/s/10_ ...
- SSIS的DelayValidation属性
一,DelayValidation Property true if validation of the package is delayed until run time. false if the ...
- 【前端开发】利用Fiddler抓包工具进行本地调试
解决什么问题: 解决前端在本地联调页面 || 样式 || 脚本时经常修改服务器代码,浪费太多时间. 避免多人同时修改代码产生冲突问题.可以在本地调完代码之后,再贴到服务器上. 其实这个问题老早就开始想 ...
- 利用css3的text-shadow属性实现文字阴影乳白效果
现在CSS3+html5的网页应用的越来越广泛了.很多网页中的字体同样可以用CSS3来实现炫酷的效果. 下面就介绍一下利用css3的text-shadow属性实现文字阴影乳白效果.这是在设计达人上面看 ...
- 如何利用好chrome控制台这个神器好好调试javascript代码
上面的文章已经大致介绍了一下console对象具体有哪些方面以及基本的应用,下面简单介绍一下如何利用好chrome控制台这个神器好好调试javascript代码(这个才是我们真正能用到实处的地方) 1 ...
- 利用边框border的属性做小符号
前两天学习中,发现网站上的一个小符号,以为是插入的img,但找来找去也未发现img的地址.最后问了同学,才得知是用border属性做出来的. 符号如右: 其css代码如下: .fuhao { pos ...
- 利用SSIS发送邮件
璎Nicole珞 博客园 闪存 首页 新随笔 联系 管理 订阅 随笔- 15 文章- 0 评论- 0 SSIS 利用发送邮件服务 Send Email Task 1. 在SSIS中如何发送邮 ...
- 利用name或id属性设置页面跳转的锚点
理论准备 网页中的链接按照链接路径的不同,可以分为3种类型,分别是内部类型.锚点链接和外部链接: 按照使用对象的不同,网页中的链接又分为文本超链接,图像超链接,E-ma ...
随机推荐
- 【Visual Lisp】人机交互与数据处理(表除外)-lisp
;;本专题所讲述的内容是人机交互以及常规数据处理技术;;★★★01.人机交互★★★;;△△△键盘输入交互△△△(getint "请输入整数");;从键盘输入整数,如果不是整数则重复 ...
- HttpWatch的Result中出现Aborted的原因分析[配图]
我们在使用HttpWatch进行Web调试的过程中有时候会看到非HTTP Status Code(状态码)的值,例如:(Aborted). (Aborted)是HttpWatch中定义的三种非HTTP ...
- UVA 12299 RMQ with Shifts(线段树:单点更新)
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...
- JQuery按回车提交数据
引入JQuery文件 <script src="JS/jquery-1.9.1.js" type="text/javascript"></sc ...
- 【收藏】Firebird知识
本代码在:WinXp Pack 3 + Delphi2009 updata1 火鸟Firebird2.5.0.23247下测试通过.使用了Data Access面板的组件用SQL进行操作作者:LAH ...
- If you really want to compile without asm, configure with --disable-asm.
真是一个奇葩问题,对我来说是的,完全不知道是什么意思,但是他就是出现了. 找到了一个相关问题http://trac.ffmpeg.org/wiki/How%20to%20quickly%20compi ...
- jquery Ajax获取本地json 以及xml文件
$(function() { $("#Button1").click(function() { //按钮单击事件 //打开文件,并通过回调函数处理获取的数据 $.get(" ...
- 'MAMapKit/MAMapKit.h' file not found
1.应该是derived data没清导致的.在Window -> Organizer -> Projects,找到你这个项目,然后点下右边derived data后边的delete按钮. ...
- JavaScript 基础第十天
学习总结 1定时器 ①.setTimeout() // 间隔多长时间执行一次(会返回一个数字型的标识) ②.setInterval() // 间隔多长时间执行,是不断地执行. ③.clearTimeo ...
- HTTP03--DNS知识
一.域名解析过程 1. 浏览器检查自身缓存,缓存时间为几分钟到小时不等,通过设置TTL属性确定. 2. 若1未找到,则查OS缓存,如windows下的host文件,linux的/etc/hosts文件 ...