zoukankan      html  css  js  c++  java
  • 利用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(2)
    
    --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>

  • 相关阅读:
    Python机器学习算法 — KNN分类
    八大排序算法(Python)
    探究为何rem在chrome浏览器上计算出错
    HTML邮件制作规范
    怎样用sourceTree将自己本地的项目上传到github网站上
    图片裁切插件jCrop的使用心得(四)
    图片裁切插件jCrop的使用心得(三)
    图片裁切插件jCrop的使用心得(二)
    图片裁切插件jCrop的使用心得(一)
    几个css的小知识点(一)
  • 原文地址:https://www.cnblogs.com/ljhdo/p/4804273.html
Copyright © 2011-2022 走看看