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

  1. 解决SSIS中的脚本任务无法调试的问题

    开发环境:操作系统环境为Win7 64Bit,数据库为SQLServer2008R2 问题现象:在SSIS的项目工程中,新建Package包,新建脚本任务,编写脚本程序以后,设置断点无法调试(Debu ...

  2. 利用ChromeCROSS可以在chrome浏览器上调试跨域代码

    利用ChromeCROSS可以在chrome浏览器上调试跨域代码 1.下载ChromeCROSS文件,可百度下载,或者在我的百度云上下载:链接: https://pan.baidu.com/s/10_ ...

  3. SSIS的DelayValidation属性

    一,DelayValidation Property true if validation of the package is delayed until run time. false if the ...

  4. 【前端开发】利用Fiddler抓包工具进行本地调试

    解决什么问题: 解决前端在本地联调页面 || 样式 || 脚本时经常修改服务器代码,浪费太多时间. 避免多人同时修改代码产生冲突问题.可以在本地调完代码之后,再贴到服务器上. 其实这个问题老早就开始想 ...

  5. 利用css3的text-shadow属性实现文字阴影乳白效果

    现在CSS3+html5的网页应用的越来越广泛了.很多网页中的字体同样可以用CSS3来实现炫酷的效果. 下面就介绍一下利用css3的text-shadow属性实现文字阴影乳白效果.这是在设计达人上面看 ...

  6. 如何利用好chrome控制台这个神器好好调试javascript代码

    上面的文章已经大致介绍了一下console对象具体有哪些方面以及基本的应用,下面简单介绍一下如何利用好chrome控制台这个神器好好调试javascript代码(这个才是我们真正能用到实处的地方) 1 ...

  7. 利用边框border的属性做小符号

    前两天学习中,发现网站上的一个小符号,以为是插入的img,但找来找去也未发现img的地址.最后问了同学,才得知是用border属性做出来的. 符号如右:  其css代码如下: .fuhao { pos ...

  8. 利用SSIS发送邮件

    璎Nicole珞 博客园 闪存 首页 新随笔 联系 管理 订阅 随笔- 15  文章- 0  评论- 0  SSIS 利用发送邮件服务 Send Email Task   1. 在SSIS中如何发送邮 ...

  9. 利用name或id属性设置页面跳转的锚点

    理论准备         网页中的链接按照链接路径的不同,可以分为3种类型,分别是内部类型.锚点链接和外部链接:         按照使用对象的不同,网页中的链接又分为文本超链接,图像超链接,E-ma ...

随机推荐

  1. chrome 浏览器 手动同步书签 && 安装离线插件

    现在查的很严,所以使用chrome浏览器 同步功能不是特别好,就算是FQ也会出现 同步延迟的情况,所以定时使用手动同步还是很靠谱的行为,就在网上找了下,借鉴下.亲测可用. 在Chrome浏览器没有一个 ...

  2. MemCached 安装笔记

    安装步骤: 1. 下载libevent & memcached 源码包 分别把memcached和libevent下载回来,放到 /tmp 目录下: # cd /tmp     # wget ...

  3. [UE4]AnimDynamics简介

    AnimDynamics简介 Author:Jia Zhipeng AnimDynamics是UE4.11 Preview 5测试版本发布的AnimationBlueprint中的新节点.功能是通过简 ...

  4. 64位系统 IIS中应用程序池设置导致 访问数据库错误

    64 位操作系统不支持Microsoft OLE DB Provider for Jet驱动程序,也不支持更早的Microsoft Access Driver (*.mdb)方式连接.导致程序里面的数 ...

  5. LR loadrunner参数化-笔记

      LR在录制程序运行的过程中,VuGen(脚本生成器) 自动生成了包含录制过程中实际用到的数值的脚本,如果你企图在录制的脚本中使用不同的数值执行脚本的活动(如查询.提交等等),那么你必须用参数值取代 ...

  6. iOS开发零基础--Swift篇 循环

    循环的介绍 在开发中经常会需要循环 常见的循环有:for/while/do while. 这里我们只介绍for/while,因为for/while最常见 for循环的写法 最常规写法 // 传统写法 ...

  7. 在WPF的WebBrowser控件中屏蔽脚本错误的提示

    在WPF中使用WebBrowser控件显示网页时,经常会报脚本错误的提示,如何屏蔽掉这些错误提示呢.方法是定义如下方法: public void SuppressScriptErrors(WebBro ...

  8. MFC学习随笔(2)

    在MFC中,有时需要多个类之间传递信息,一个共通的头文件是个不错的选择.如果在头文件中直接声明一个变量的话,势必会报出一个错误: error LNK2005: "struct my_glob ...

  9. JAVA CAS原理深度分析-转载

    参考文档: http://www.blogjava.net/xylz/archive/2010/07/04/325206.html http://blog.hesey.net/2011/09/reso ...

  10. 在PHP中使用Mysqli操作数据库

    PHP的 mysqli 扩展提供了其先行版本的所有功能,此外,由于 MySQL 已经是一个 具有完整特性的数据库服务器 , 这为PHP 又添加了一些新特性 . 而 mysqli 恰恰也支持了 这些新特 ...