Programowe łączenie zadań

Dotyczy:SQL Server Środowisko SSIS Integration Runtime w usłudze Azure Data Factory

Ograniczenie precedencji, reprezentowane w modelu obiektowym przez klasę PrecedenceConstraint , ustala kolejność uruchamiania Executable obiektów w pakiecie. Ograniczenie precedensu pozwala na zależność wykonywania kontenerów i zadań w pakiecie od wyniku wykonania poprzedniego zadania lub kontenera. Ograniczenia precedencyjne ustalane są między parami obiektów Executable poprzez wywołanie Add metody kolekcji PrecedenceConstraints na obiekcie kontenerowym. Po utworzeniu ograniczenia między dwoma obiektami wykonywalnymi, ustawiasz Value tę właściwość, aby ustalić kryteria wykonania drugiego pliku wykonywalnego zdefiniowanego w tym ograniczeniu.

Możesz używać zarówno ograniczenia, jak i wyrażenia w jednym ograniczeniu precedencji, w zależności od wartości przypisanej dla tej EvalOp właściwości, jak opisano w poniższej tabeli:

Wartość właściwości EvalOp Description
Constraint Określa, że wynik wykonania decyduje o tym, czy ograniczony kontener lub zadanie zostanie uruchomione. Ustaw właściwość Value na PrecedenceConstraint pożądaną wartość z DTSExecResult wyliczenia.
Expression Określa, że wartość wyrażenia decyduje o tym, czy ograniczony kontener lub zadanie zostanie uruchomione. Ustaw Expression własność .PrecedenceConstraint
ExpressionAndConstraint Określa, że wynik ograniczenia musi nastąpić, a wyrażenie musi być wyliczone, aby ograniczony kontener lub zadanie mogło się uruchomić. Ustaw zarówno , Value jak i Expression właściwości , PrecedenceConstrainti ustaw LogicalAnd jego własność na prawdę.
ExpressionOrConstraint Określa, że wynik ograniczenia musi nastąpić lub wyrażenie musi być ocenione, aby ograniczony kontener lub zadanie mogło się uruchomić. Ustaw zarówno własności , ValuePrecedenceConstraintjak i Expression , i ustaw LogicalAnd jego własność na fałsz.

Poniższy przykład kodu demonstruje dodanie dwóch zadań do pakietu. Między nimi tworzy się A, PrecedenceConstraint która uniemożliwia uruchomienie drugiego zadania aż do zakończenia pierwszego.

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