2014-06-06 30 views
0

我有一個查詢調查預定的ETL任務啓動表的查詢。該查詢爲我提供了包名和所需的參數。我想要並行執行它們,但因爲要運行的計劃任務的數量是動態的,所以我使用ForEach循環遍歷查詢返回的每一行,並同樣動態執行它們。這似乎最明顯是連續的,而不是平行的。我想要發生的是控制流啓動SSIS包並繼續下一個迭代,啓動下一個包等,而不是等待一個包完成後再開始下一個包。SSIS - 在當前步驟完成之前如何使控制流程繼續?

有沒有辦法做到這一點?

回答

0

確切的解決方案取決於應用程序的細節,但作爲一般方法,我建議將表讀入一個或多個變量,並使用這些變量的值作爲優先約束來相應地執行包。這將避免使用for循環並提供並行性。

另一個探索的解決方案是SQL Server代理,它在大多數情況下都能勝任。

SSIS示例。比方說,我們將從SQL Server中的任務讀入變量RunTask1,RunTask2,RunTask3,RunTask4和RunTask5。如果變量的值爲1,我們將運行相應的任務,並且不會運行任何其他值。下圖顯示瞭如何使用這些數據作爲優先約束(在本例中的任務3):

enter image description here

+0

使用precendence約束聽起來像一個有趣的選擇,但我不知道我在下面。如果我已經將排隊任務表加載到一個變量中,我如何從優先約束控件讀取它?另外,如何提供並行性?也許你可以給我一個你的意思的例子..? – GreenShepherd

+0

我已經添加了一個例子。 – Jayvee

+0

謝謝你。但是,如果我有多個需要並行運行的任務1的多個實例(當然有不同的參數)呢? – GreenShepherd

相關問題