2012-12-01 59 views
0

我想有一個SSIS包,在這種情況下,我有兩個變量:x = 1和y = 0以及3個任務:一個是執行SQL任務(任務A)和兩個腳本任務任務B和C)。當我們在任務A中選擇x = 1時,我想要運行任務B,並且在任務A中選擇y = 0時,運行任務C.在A和B之間的優先約束編輯器中,選擇具有成功值的表達式和約束,並在A和C之間的優先約束編輯器中選擇具有失敗值的表達式和約束,但我不知道在這些優先約束編輯器中必須寫入什麼表達式。請幫助我 尊重ssis包中的優先約束編輯器

回答

4

您將需要在設計時設置兩個包裝變量來保存x和y。

在執行SQL組件的常規選項卡中,將結果更改爲SingleRow,並確保查詢返回1行並顯示所需的參數詳細信息。轉到Result Set選項卡並將兩個Package Variable(x,y)設置爲從查詢返回的列。

添加兩個工作流,都來自執行SQL組件,都在成功。對於第一個工作流程(進入任務B),將表達式設置爲@ [User :: x] == 1.對於第二個工作流程(對於任務C),將表達式設置爲@ [User :: y] == 0

如果您希望選項互斥,您將不得不在每個工作流程中包含兩個子句(即@ [User :: x] == 1 & & @ [User :: y]!= 0)。您將必須制定所有排列並將它們包括在表達式中,以避免兩個工作流程都觸發。

+0

在執行SQl任務編輯器部分SQLStatement我應該寫這個查詢:Declare @x int - Declare @y int - Set @ x = 1 - Set @ y = 0 - 選擇@x或選擇@y –

+0

當我寫執行SQl任務編輯器中的上述查詢部分SQLStatement(Declare @x int - Declare @y int -Set @ x = 1 - Set @ y = 0 - Select @x)並將表達式設置爲@ [User :: x] == 1(進入任務B)和SUCCESS值,並設置表達式爲@ [User :: y] == 0(到任務C)並且FAILUR值,任務A和任務B都工作良好並變綠,但當我將查詢更改爲:選擇@y,任務C不工作,並且任務A和任務B再次工作並變爲綠色。我希望在每次改變查詢時只對任務B或C運行。請幫助我,關於 –

+0

另一個問題,我有這樣的:是否有必要在做東西之前將x和y定義爲變量? –