【问题标题】:SSIS - Skip Missing FilesSSIS - 跳过丢失的文件
【发布时间】:2010-06-14 18:07:44
【问题描述】:

我有一个 SSIS 2008 包,它调用了大约 25 个其他 SSIS 包。

这些子包中的每一个都将特定文件加载到表中。但有时这些输入文件中的一个或多个会丢失。

如何让子包失败(因为文件丢失)但让父包的其余部分继续运行?

我尝试增加父包、父包中调用每个子包的任务以及子包本身的最大错误计数。这些似乎都没有任何区别。当我在缺少文件的情况下运行它时仍然出现此错误:

SSIS 警告代码 DTS_W_MAXIMUMERRORCOUNTREACHED。这 执行方法成功,但是 达到的错误数 (2) 允许的最大值 (1);导致 失败。这发生在数字 错误数达到指定的数量 在最大错误计数中。更改 MaximumErrorCount 或修复错误。

编辑: failpackageonfailure 和 faulparentonfailure 已经在各处都设置为 false。

【问题讨论】:

    标签: sql sql-server sql-server-2008 ssis


    【解决方案1】:

    我还没有尝试过,但这就是我的处理方式。 为文件名和子包名创建一个变量。 使用 For Each 循环容器。让它遍历文件的位置并一次提取一个文件名。使用文件名更改子包名称变量。在容器中具有运行子包的任务,并根据子包名称变量的值动态设置名称。

    那么它应该只尝试运行具有适当文件的子包。

    【讨论】:

    • 我最终没有为此使用 SSIS,但您的方法可能有效,所以我给您答案。 (未经测试)
    【解决方案2】:

    在执行包任务的属性中,可以设置failpackageonfailure和faulparentonfailure。我没有使用过这些,但您可能可以使用它们来获得您想要的结果。

    【讨论】:

    • 在我能想到的任何地方,这些都已设置为 false。我更新了要注意的问题。
    【解决方案3】:

    旁注:为简单起见,我将在父 SSIS 包上设置这些设置。

    序列容器和包级别有一个 MaximumErrorCount 值。如果您使用它,请确保您的值是同步的,因为包级别设置优先。

    另一个选项是 ForcedExecutionValue。

    要进行设置,请为每个容器加载属性选项卡,然后:

    1) ForceExecutionValue to TRUE

    这将导致容器返回您放入变量中的任何值(请参阅步骤 #2),尽管任务的结果是。

    2) ForcedExecutionValue to 0

    这充当该任务的返回值,并将其设置为 0(真,认为“返回 0”就像在 C++ 中一样)。

    希望对你有帮助。

    这将导致包

    • 使用“ForcedExecutionValue”加载属性为0,然后设置Force

    【讨论】:

    • 我按照您的建议尝试了这个,但我仍然收到相同的错误消息,并且它仍然在第一个失败的子包处停止。
    【解决方案4】:

    我做过这种场景开发,先规划一下包的执行方式,当你得到一个文件时,我们需要处理这个包,如果不是失败或者离开包,最终我们的目标是处理所有的文件包现存的。为所有包取一个变量。使用父包中的脚本组件或连接字符串将文件的现有变量设置为“Y”或“N”。对变量的值执行包的现有条件。

    这种方法给了我们处理具有不同源文件出现次数的多个文件的预期结果。

    谢谢 说实话

    【讨论】:

      猜你喜欢
      • 2019-05-11
      • 2011-12-29
      • 2019-02-14
      • 2012-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多