【问题标题】:Control flow task in SSIS stops after first oneSSIS中的控制流任务在第一个之后停止
【发布时间】:2015-06-01 15:03:01
【问题描述】:

我环顾四周,但似乎找不到解决问题的方法。我在 SSIS 中有一个控制流来导入文件。 (看起来新成员无法发布图像,因此您可以找到链接here。该模式对多个文件重复。)脚本任务检查文件是否存在并使用表达式和约束成功条件来选择下一步做什么.

如果文件 1 存在,它会导入到某个位置(按预期),然后在该特定块完成时(不按预期)停止整个过程。它不检查文件 2 是否存在。我不知道是什么阻止了它。我是否需要在导入文件块之后向箭头添加一个约束,或者在执行的包任务本身中是否有一个设置我需要更改以告诉它返回到“更高级别”包以继续下一个文件是否存在检查?

【问题讨论】:

  • 不确定为什么您的解决方案不起作用,但另一种方法是将两个“文件 1”步骤​​放入序列容器中,两个“文件 2”步骤相同,并且有一个从 File1 容器到 File2 容器的优先约束。
  • 不确定这是否可行,我仍然需要运行所有文件是否存在检查,无论哪些文件存在或不存在。
  • 尝试将“导入文件 1”的 ForcedExecutionResult 属性设置为成功,看看它是否仍然挂起
  • 您在“检查文件 1 是否存在”和“检查文件 2 是否存在”之间的链接上设置的表达式是什么。
  • @jjjjjjjjjjj - 没问题,只需使用 On Completion 而不是 On Success 作为两个容器之间的优先约束。或者如果文件不存在,让文件存在检查返回成功给容器。

标签: sql ssis


【解决方案1】:

我想通了。正如 SFrejofsky 所提到的,有两个条件语句导致下一个“检查文件是否存在”块是不允许包继续的原因。

在我进行了两项更改后,程序包按预期运行:

  • 在导入文件 1 和检查文件 2 之间将优先约束切换为完成,因此只要导入完成,链接将始终有效。
  • 将约束设置为逻辑或。只有一个链接,而不是两个,需要运行包以继续检查文件 2。我相信这是主要问题,因为包的设置方式一次只能运行一个链接。

【讨论】:

    【解决方案2】:

    我不得不假设您在从任务到任务的链接上放置的约束和表达式阻塞了流程。如果您有两个链接通向 1 个任务,则必须满足所有约束和表达式才能执行下一个任务。

    无论文件是否存在,您都有条件逻辑让我相信这是您的问题。

    从包之间的链接中去掉条件逻辑,在子包中处理包的流动。向子包传递一个变量,该变量指示文件是否存在。您在子包中的第一步应该是验证该信息并采取相应措施。

    这样,检查文件 1 是否存在和检查文件 2 是否存在之间的链接将始终处于就绪状态,然后检查文件 2 是否存在只有在文件 1 的文件导入成功时才会触发。

    我无法说明您导入过程正在做什么,但我建议您添加一个日志功能,以便您可以强制子包返回成功并记录该文件可能发生的任何错误。即使您尝试导入的许多文件之一存在问题,这也将允许该过程继续进行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-16
      • 2015-11-22
      • 1970-01-01
      • 2011-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多