控制流可以被设计成并行执行,线性执行或者二者结合。控制流任务本身是线性执行的,这意味着一个任务在切换到另外一个任务之前必须先执行完毕。虽然在一个package中可以设计出相互之间没有依赖性的控制流任务,这些任务在包中仍然是线性执行的,换一种说法就是,当一个任务正在执行的时候,它不会跳到下一个任务中。SSIS执行线程会仍然停留在当前任务,知道成功执行完毕或者失败。
注意:控制流同步执行和数据流的异步执行没有冲突。二者之间有一些差别。在数据流任务中主要关注的是如何处理数据,而不是控制流程。
在集成服务中还允许设置最大允许的同步执行的任务的个数,通过属性MaxConcurrentExecutables可以设置。在Control Flow界面内右击Properties,如图1
图1
默认的值是-1,例如,如果服务器有4个处理器,集成服务将允许6个任务并行执行。如果当前正在执行的任务个数比允许的个数要多,一些任务就需要等待只到有空闲的线程。
相比较之下,一些任务需要更多的服务器资源,所以执行的并发性不应该过度地依赖处理器的个数。所以任务的。例如如果一个package包含一个数据流任务,那么这个package就可能需要更多的服务器资源。事实上,数据流任务可以设置成多线程执行,这些将在后面的内容中介绍。