在ssis中并行执行

时间:2015-07-06 05:18:42

标签: ssis

我开发了一个主包(Main.dtsx)和3个子包(Processor.dtsx)。注意:从源位置和进程中获取文件的所有子包的代码都是相同的。为了优化性能,我希望所有这3个子包都应该在10000个文件上同时运行,这样第一个孩子将选择第一个文件并开始执行,同时第二个将获取第二个文件,依此类推。如果有,请分享代码。我尝试使用'MaxConcurrentExecutables'选项,但在这种情况下,所有组件都访问不期望的相同文件。

1 个答案:

答案 0 :(得分:0)

使用Foreach循环无法完成此操作,但您可以使用脚本任务完成任务:

  1. 添加3个字符串变量以保存文件名(即File1,File2,File3)
  2. 将主数据包中的变量传递给每个子包。
  3. 在每个子包中,在文件连接管理器中配置表达式以将该参数用作连接字符串
  4. 在每个包的末尾,确保从源文件夹移动文件或重命名文件,以便在后续循环中忽略该文件。
  5. 设置For循环,该循环将在处理完所有文件后结束。您可以向包中添加一个布尔变量,如“ProcessingIsAllDone”,然后在脚本任务中设置它。
  6. 在For循环的顶部添加一个脚本任务,并将执行包任务与先前约束连接起来。
  7. 使用以下脚本设置变量

    e.layer