以程式設計方式連接工作

在物件模型中由 PrecedenceConstraint 類別表示的優先順序條件約束會建立 Executable 物件在封裝內執行的順序。 此優先順序條件約束可允許根據上一個工作或容器的執行結果來執行封裝中的容器和工作。 優先順序條件約束會在 Executable 物件配對之間建立,其方式是在容器物件上呼叫 PrecedenceConstraints 集合的 Add 方法。 當您在兩個可執行物件之間建立條件約束時,您會設定 Value 屬性,以建立用來執行此條件約束內定義之第二個可執行物件的準則。

您可以在單一優先順序條件約束內同時使用條件約束和運算式,這是根據您為 EvalOp 屬性指定的值而定,如下表所述:

EvalOp 屬性的值

說明

Constraint

指定執行結果會決定是否執行受條件約束的容器或工作。 將 PrecedenceConstraintValue 屬性設定為 DTSExecResult 列舉中所要的值。

Expression

指定運算式的值會決定是否執行受條件約束的容器或工作。 設定 PrecedenceConstraintExpression 屬性。

ExpressionAndConstraint

指定條件約束結果必須發生而且運算式必須評估,受條件約束的容器或工作才能執行。 同時設定 PrecedenceConstraintValueExpression 屬性,並將它的 LogicalAnd 屬性設定為 true。

ExpressionOrConstraint

指定條件約束結果必須發生或者運算式必須評估,受條件約束的容器或工作才能執行。 同時設定 PrecedenceConstraintValueExpression 屬性,並將它的 LogicalAnd 屬性設定為 false。

下列程式碼範例示範如何將兩個工作加入封裝中。 在兩者之間建立了 PrecedenceConstraint,防止第二個工作在第一個工作完成以前執行。

using System;
using Microsoft.SqlServer.Dts.Runtime;

namespace Microsoft.SqlServer.Dts.Samples
{
  class Program
  {
    static void Main(string[] args)
    {
      Package p = new Package();

      // Add a File System task.
      Executable eFileTask1 = p.Executables.Add("STOCK:FileSystemTask");
      TaskHost thFileHost1 = eFileTask1 as TaskHost;

      // Add a second File System task.
      Executable eFileTask2 = p.Executables.Add("STOCK:FileSystemTask");
      TaskHost thFileHost2 = eFileTask2 as TaskHost;

      // Put a precedence constraint between the tasks.
      // Set the constraint to specify that the second File System task cannot run
      // until the first File System task finishes.
      PrecedenceConstraint pcFileTasks = 
        p.PrecedenceConstraints.Add((Executable)thFileHost1, (Executable)thFileHost2);
      pcFileTasks.Value = DTSExecResult.Completion;
    }
  }
}
Imports Microsoft.SqlServer.Dts.Runtime

Module Module1

  Sub Main()

    Dim p As Package = New Package()
    ' Add a File System task.
    Dim eFileTask1 As Executable = p.Executables.Add("STOCK:FileSystemTask")
    Dim thFileHost1 As TaskHost = CType(eFileTask1, TaskHost)

    ' Add a second File System task.
    Dim eFileTask2 As Executable = p.Executables.Add("STOCK:FileSystemTask")
    Dim thFileHost2 As TaskHost = CType(eFileTask2, TaskHost)

    ' Put a precedence constraint between the tasks.
    ' Set the constraint to specify that the second File System task cannot run
    ' until the first File System task finishes.
    Dim pcFileTasks As PrecedenceConstraint = _
      p.PrecedenceConstraints.Add(CType(thFileHost1, Executable), CType(thFileHost2, Executable))
    pcFileTasks.Value = DTSExecResult.Completion

  End Sub

End Module
Integration Services 圖示 (小) 掌握 Integration Services 的最新狀態

若要取得 Microsoft 的最新下載、文件、範例和影片以及社群中的選定解決方案,請瀏覽 MSDN 上的 Integration Services 頁面:


若要得到這些更新的自動通知,請訂閱該頁面上所提供的 RSS 摘要。

請參閱

概念

以程式設計方式加入資料流程工作