Поделиться через


Соединение задач программным образом

Область применения: среда выполнения интеграции SSIS SQL Server в Фабрика данных Azure

Управление очередностью, представленное в объектной модели классом PrecedenceConstraint, устанавливает порядок запуска объектов Executable в пакете. Управление очередностью позволяет установить зависимость выполнения контейнеров и задач в пакете от результата выполнения предыдущего контейнера или задачи. Элементы управления очередностью устанавливаются между парами объектов Executable путем вызова метода Add коллекции PrecedenceConstraints объекта-контейнера. После создания ограничения между двумя исполняемыми объектами необходимо задать значение свойства Value, устанавливающего критерии выполнения второго исполняемого объекта, определенного в ограничении.

В зависимости от значения, заданного свойству EvalOp, можно использовать одновременно и ограничение, и выражение в одном и том же управлении очередностью, как описано в следующей таблице.

Значение свойства EvalOp Description
Constraint Указывает, что результат выполнения определяет, будет ли запущен связанный ограничением контейнер или задача. Задайте свойству Value объекта PrecedenceConstraint необходимое значение из перечисления DTSExecResult.
Expression Указывает, что значение выражения определяет, будет ли запущен связанный ограничением контейнер или задача. Задайте значение свойства Expression объекта PrecedenceConstraint.
ExpressionAndConstraint Указывает, что связанный ограничением контейнер или задача будут выполнены, если выполнится ограничение и выражение вернет положительный результат. Установите свойства Value и Expression объекта PrecedenceConstraint, а свойство LogicalAnd установите в значение true.
ExpressionOrConstraint Указывает, что связанный ограничением контейнер или задача будут выполнены, если выполнится ограничение либо выражение вернет положительный результат. Установите свойства Value и Expression объекта PrecedenceConstraint, а свойство 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  

См. также

Добавление задачи потока данных программным образом