共用方式為


優先順序條件約束

優先順序條件約束可在控制流程中,連結封裝中的可執行檔、容器和工作,並指定判斷可執行檔是否執行的條件。 可執行檔可以是「For 迴圈」容器、「Foreach 迴圈」容器、「時序」容器、工作或事件處理常式。 事件處理常式也可使用優先順序條件約束,以將其可執行檔連結至控制流程。

優先順序條件約束會連結兩個可執行檔:優先順序可執行檔和受條件約束的可執行檔。 優先順序可執行檔在條件約束可執行檔之前執行,且優先順序可執行檔的執行結果可以決定條件約束可執行檔是否執行。 下圖顯示了由優先順序條件約束連結的兩個可執行檔。

以優先順序條件約束連接的可執行檔

在線性控制流程 (即沒有分支的控制流程) 中,優先順序條件約束單獨管理工作執行的順序。 如果控制流程分支,Integration Services 執行階段引擎會決定分支後緊接著執行的工作和容器順序。 執行階段引擎也決定控制流程中未連接的工作流程之執行順序。

Integration Services 的巢狀容器架構可讓所有容器 (僅封裝單一工作的工作主機容器除外) 包含其他容器,每個容器各有自己的控制流程。 「For 迴圈」容器、「Foreach 迴圈」容器和「時序」容器可以包含多個工作和其他容器,而工作和其他容器進而可以包含多個工作和容器。 例如,具有「指令碼」工作和「時序」容器的封裝具有連結「指令碼」工作和「時序」容器的優先順序條件約束。 「時序」容器包括三個「指令碼」工作,且其優先順序條件約束會將這三個「指令碼」工作連結至一個控制流程。 下圖顯示具有兩個巢狀層級之封裝中的優先順序條件約束。

封裝中的優先順序條件約束

因為封裝位於 SSIS 容器階層的最上層,所以優先順序條件約束無法連結多個封裝;不過,您可以將「執行封裝」工作新增至封裝,然後間接地將其他封裝連結至控制流程。

您可以利用下列方式設定優先順序條件約束:

  • 指定評估作業。 優先順序條件約束同時使用條件約束值和運算式,或使用其中之一,來決定條件約束可執行檔是否執行。

  • 如果優先順序條件約束使用執行結果,則您可以將執行結果指定為成功、失敗或完成。

  • 如果優先順序條件約束使用評估結果,則您可以提供評估為布林的運算式。

  • 指定只評估優先順序條件約束,還是同時評估套用至條件約束可執行檔的其他條件約束。

評估作業

Integration Services 提供下列評估作業:

  • 僅使用優先順序可執行檔之執行結果的條件約束,以決定條件約束可執行檔是否執行。 優先順序可執行檔的執行結果可以是完成、成功或失敗。 這是預設作業。

  • 運算式,對其進行評估以決定條件約束可執行檔是否執行。 如果運算式評估為 true,則條件約束可執行檔會執行。

  • 運算式與條件約束,此條件約束會組合優先順序可執行檔之執行結果與評估運算式之傳回結果兩者的需求。

  • 運算式或條件約束,此條件約束會使用優先順序可執行檔的執行結果或評估運算式的傳回結果。

SSIS Designer 使用色彩識別優先順序條件約束的類型。 「成功」條件約束為綠色,「失敗」條件約束為紅色,而「完成」條件約束則為藍色。 若要在 SSIS Designer 中顯示文字標籤以展示條件約束類型,則必須設定 SSIS Designer 的協助工具功能。

運算式必須是有效的 SSIS 運算式,可包含函數、運算子以及系統和自訂變數。 如需詳細資訊,請參閱 Integration Services (SSIS) 運算式Integration Services (SSIS) 變數

執行結果

優先順序條件約束可以只使用下列執行結果,或與運算式一起使用。

  • 完成,只要求優先順序可執行檔完成 (無須考慮結果),就可執行條件約束可執行檔。

  • 成功,要求優先順序可執行檔必須成功完成,才可執行條件約束可執行檔。

  • 失敗,要求優先順序可執行檔失敗時,才可執行條件約束可執行檔。

注意

只有是同一 Precedence Constraint 集合之成員的優先順序條件約束,才可以使用邏輯 AND 條件將其分組。 例如,您無法結合來自兩個「Foreach 迴圈」容器的優先順序條件約束。

優先順序條件約束的組態

您可以透過 SSIS 設計師或以程式設計方式設定屬性。

如需您可以在 SSIS Designer中設定之屬性的相關資訊,請參閱優先順序條件約束編輯器

如需以程式設計方式設定這些屬性的詳細資訊,請參閱 PrecedenceConstraint

如需如何在 SSIS Designer中設定這些屬性的詳細資訊,請按一下下列其中一個主題:

social.technet.microsoft.com 上的技術文件: SSIS 運算式範例

另請參閱

將運算式新增至優先順序條件約束多個優先順序條件約束