Click to Rate and Give Feedback
MSDN
MSDN Library
SQL Server
SQL Server 2008
Development
Developer's Guide
 Connecting Tasks Programmatically
Other versions are also available for the following:
SQL Server 2008 Books Online (August 2008)
Connecting Tasks Programmatically

A precedence constraint, represented in the object model by the PrecedenceConstraint class, establishes the order in which Executable objects run in a package. The precedence constraint allows the execution of the containers and tasks in a package to be dependent on the result of the execution of a previous task or container. Precedence constraints are established between pairs of Executable objects by calling the Add method of the PrecedenceConstraints collection on the container object. After you create a constraint between two executable objects, you set the Value property to establish the criteria for executing the second executable defined in the constraint.

You can use both a constraint and an expression in a single precedence constraint, depending on the value that you specify for the EvalOp property, as described in the following table:

Value of the EvalOp property Description

Constraint

Specifies that the execution outcome determines whether the constrained container or task runs. Set the Value property of the PrecedenceConstraint to the desired value from the DTSExecResult enumeration.

Expression

Specifies that the value of an expression determines whether the constrained container or task runs. Set the Expression property of the PrecedenceConstraint.

ExpressionAndConstraint

Specifies that the constraint outcome must occur and the expression must evaluate for the constrained container or task to run. Set both the Value and the Expression properties of the PrecedenceConstraint, and set its LogicalAnd property to true.

ExpressionOrConstraint

Specifies that either the constraint outcome must occur, or the expression must evaluate, for the constrained container or task to run. Set both the Value and the Expression properties of the PrecedenceConstraint, and set its LogicalAnd property to false.

The following code sample demonstrates adding two tasks to a package. A PrecedenceConstraint is created between them that prevents the second task from running until the first task finishes.

C#
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;
    }
  }
}
Visual Basic
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
Tags What's this?: Add a tag
Community Content   What is Community Content?
Add new content RSS  Annotations
Processing
© 2008 Microsoft Corporation. All rights reserved. Terms of Use  |  Trademarks  |  Privacy Statement
Page view tracker