Соединение задач программным образом
Область применения: среда выполнения интеграции 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