プログラムによるタスクの接続

優先順位制約は、PrecedenceConstraint クラスとしてオブジェクト モデル内に表されるもので、パッケージ内での Executable オブジェクトの実行順序を確立します。優先順位制約を使用すると、パッケージ内のコンテナやタスクを、直前のコンテナやタスクの実行結果に依存して実行させることができます。2 つの Executable オブジェクト間の優先順位制約は、コンテナ オブジェクトの PrecedenceConstraints コレクションにある Add メソッドを呼び出すことによって確立されます。2 つの実行可能オブジェクト間の制約を作成したら、Value プロパティを設定して、制約で定義されている 2 番目の実行可能オブジェクトを実行する条件を設定します。

次の表で説明するように、EvalOp プロパティに指定する値に応じて、1 つの優先順位制約内で制約と式の両方を使用できます。

EvalOp プロパティの値

説明

Constraint

制約付きコンテナまたは制約付きタスクを実行するかどうかを実行結果が決定するように指定します。PrecedenceConstraintValue プロパティを DTSExecResult 列挙の目的の値に設定します。

Expression

制約付きコンテナまたは制約付きタスクを実行するかどうかを式の値で決定するように指定します。PrecedenceConstraintExpression プロパティを設定します。

ExpressionAndConstraint

実行する制約付きコンテナまたは制約付きタスクに対して、制約結果が発生し、式が評価するように指定します。PrecedenceConstraintValue プロパティおよび Expression プロパティの両方を設定し、その LogicalAnd プロパティを true に設定します。

ExpressionOrConstraint

実行する制約付きコンテナまたは制約付きタスクに対して、制約結果が発生するか、または式が評価するように指定します。PrecedenceConstraintValue プロパティおよび Expression プロパティの両方を設定し、その LogicalAnd プロパティを false に設定します。

次のコード例では、パッケージにタスクを 2 つ追加します。次に、タスクの間に PrecedenceConstraint を作成し、第 1 のタスクが終了するまで第 2 のタスクは実行しないように設定します。

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 の入手

マイクロソフトが提供する最新のダウンロード、アーティクル、サンプル、ビデオ、およびコミュニティで選択されたソリューションについては、MSDN または TechNet の Integration Services のページを参照してください。

これらの更新が自動で通知されるようにするには、ページの RSS フィードを購読します。