初学者:SSIS包并行处理怎么实现? RRS feed

  • 问题

  • 问题描述:需要在A包里面调用另外B包,然后通过从A包里面的一个foreach循环,传递不同的参数给B包,调用的所有B包并行处理。



    2010年9月29日 2:51



  • 难道是我的问题太傻瓜??知道的人快出现吧!!呜呜!!

    2010年9月29日 11:07
  • This is a very smart question, you are also an experienced SSIS guy. I am sorry I cannot type Chinese at this moment to explain this.

    The key point in your question is that you are using Foreach loop, let's assume that you are just using the Execute Package task in the Foreach loop container, the Foreach loop container decided that the Execute Package task can be run under the Enumerator control only.

    There are two major options to make the package runing on the multiple treads: 并行 control flow and 并行 Data flow. In your case, you can consider to use the other ways to call the B package, for example create the SQL Job, use the Conditional Split transformation, multiple data flows, multiple controls and so on, but anyway, the condition to run the B pakcage should be 并行 at first.


    2010年9月29日 15:41
  • Many thanks for your answer, Patrick. You are always so kind.

    Is there any place to set the parallel threads for a package? (I think the SSIS should meet this kind of requirement).  That means when I call a package with different parameters, those tasks will be run by parallel with several threads. I am sorry I can not explain my issue clearly, Patrick.  For example:

    When I pass the parameter A  with 3 different values, the package B will be called three times.  What I want is the Call 1, Call2, Call 3 are running in parallel.

    Parameter A(int a = 3) -> Package B             Call 1     

    Parameter A(int a = 4) -> Package B             Call 2

    Parameter A(int a = 5) -> Package B              Call 3


    2010年9月30日 1:07
  • 有人帮忙不?我觉得这个问题应该是很常见的一个需求呀!

    2010年10月4日 10:28
  • 在 Package 级别上有一个 MaxConcurrentExcutables 属性,它是用来控制多线程的。你可以参考下面的这个更为详细的文章:


    • 已标记为答案 suedeyang 2010年12月8日 3:57
    2010年10月5日 11:24