1

我是 SSIS 新手,正在构建一个包来执行各种文件系统任务。除了位于单个序列容器中的一组 Foreach 循环容器外,所有对象都按预期工作。这个想法是我希望它们同时运行,但不希望包在所有运行之前进入下一步。

这些 Foreach 循环检查文件名中的特定通配符并将其移动到另一个文件夹,同时重命名文件。当我手动执行每个 Foreach 循环(右键单击容器并点击执行容器)时,任务已正确执行,容器和文件系统任务上的绿色复选标记都确认了该任务,并且我看到文件已正确移动到目标文件夹。

在此处输入图像描述

但是当我尝试执行整个序列容器时,只有一个文件系统任务成功完成(似乎是随机的,因为每次尝试都不一样)。尽管收到了所有复选标记,但实际上只有一个文件被移动和重命名。

在此处输入图像描述

我还尝试添加约束以从一个容器流向下一个容器。这一次绿色复选标记出现在所有 5 个容器上,但只有第一个文件系统任务被选中(并且被移动 + 重命名)。就好像其余的任务都被跳过了。

在此处输入图像描述

如何确保每次运行包时完成所有任务?

编辑:这是我上次运行的执行结果:

在此处输入图像描述

4

1 回答 1

0

For-Each 循环不执行的唯一方法是枚举数为空。在第一个随机选择的 FE 循环之后发生了一些事情,以确保其余的 F-Each 循环没有枚举。我会做以下事情:

  • 在用于源文件夹的变量以及正在移动的每个文件上放置一个变量值更改断点。我会用一个显示文件路径的消息框来放置一个脚本任务的长度。将这些断点放在每个循环上。
  • 确保您的文件路径是完全限定的,以便使用的源确实是正确的
  • 检查进度选项卡以获取详细信息 FE 循环
于 2018-08-27T19:14:53.827 回答