SSIS如何确定控制流的执行顺序?

时间:2016-06-06 19:29:19

标签: ssis ssis-2012 control-flow

要点:

我想找到一种方法告诉SSIS,当并行运行多个可执行文件时,应首先运行哪些可执行文件。 Internet上有大量有关MaxConcurrentExecutables属性的资料,但没有关于SSIS如何决定运行可执行文件的顺序的信息。

我正在寻找一个答案来描述当没有优先约束时SSIS用来确定可执行文件的运行时顺序的机制,并且可执行文件的数量大于最大并发可执行文件数。

更多详情:

我有一个主SSIS包,它调用大量的Staging包,每个包负责将数据复制到Staging数据库的不同表中。这些子包执行的时间差异很大,从< 1分钟到> 20分钟。

为了最好地利用我的时间,我希望首先运行较长时间运行的软件包,然后运行中型软件包,然后运行小型软件包。

理想情况下,我可以将包分类为优先级容器(A,B,C),然后让SSIS引擎按顺序处理容器。我想在开始B之前等待A完成:相反,我希望在SSIS开始工作之前,A中的所有可执行文件都已启动。

enter image description here

在开始使用容器B之前,有没有办法让SSIS启动容器A中的所有任务?如果不这样,有人能描述SSIS用来确定运行顺序的逻辑吗?

1 个答案:

答案 0 :(得分:0)

  

MaxConcurrentExecutables确定可以并行执行并默认为-1的控制流项目数。这相当于处理器数量加上2.

在您的情况下,SEQC A,SEQC B和SEQC C的执行同时开始,并继续每个组中的每个执行包任务,直到它们全部完成。 因此,为了最好地利用处理能力并缩短执行时间,您需要将包拆分为每个组,这样每个组大致需要大约相同的时间来完成所有EP任务。

  

例如,如果您有Package1(30分钟),Package2(10分钟),Package3(8分钟),Package4(8分钟),则按以下方式分割可以获得最佳性能。

<table border=1 cellspacing="0px" cellpadding="5px">
  <tr>
  <th>SEQC A</th><th>SEQC B</th></tr>
<tr><td>Package1</td><td>Package2</td>  </tr>
  <tr><td>&nbsp;</td><td>Package3</td>  </tr>
  <tr><td>&nbsp;</td><td>Package4</td>  </tr>
</table>