Programové připojování úkolů

Platí pro:SQL Server SSIS Integration Runtime v rámci Azure Data Factory

Přednostní omezení, reprezentované v objektovém modelu třídou PrecedenceConstraint , stanovuje pořadí, v jakém Executable objekty běží v balíčku. Omezení priority umožňuje, aby provádění kontejnerů a úloh v balíčku záviselo na výsledku vykonání předchozí úlohy nebo kontejneru. Přednostní omezení jsou stanovena mezi dvojicemi objektů Executable voláním Add metody PrecedenceConstraints kolekce na kontejnerovém objektu. Po vytvoření omezení mezi dvěma spustitelnými objekty nastavíte Value vlastnost, která stanoví kritéria pro spuštění druhého spustitelného souboru definovaného v omezení.

Můžete použít jak omezení, tak výraz v jednom přednostním omezení, v závislosti na hodnotě, kterou pro danou vlastnost EvalOp určíte, jak je popsáno v následující tabulce:

Hodnota vlastnosti EvalOp Description
Constraint Specifikuje, že výsledek vykonání určuje, zda omezený kontejner nebo úloha sběží. Nastavte Value vlastnost na PrecedenceConstraint požadovanou hodnotu z DTSExecResult výčtu.
Expression Specifikuje, že hodnota výrazu určuje, zda omezený kontejner nebo úloha sběží. Nastavte vlastnost Expression .PrecedenceConstraint
ExpressionAndConstraint Specifikuje, že výsledek omezení musí nastat a výraz musí vyhodnotit, aby omezený kontejner nebo úkol mohl skončit. Nastavte ValueExpression vlastnosti a vlastnosti , PrecedenceConstrainta nastavte jeho LogicalAnd vlastnost na true.
ExpressionOrConstraint Specifikuje, že buď musí nastat výsledek omezení, nebo výraz musí být vyhodnocován, aby omezený kontejner nebo úkol mohl skončit. Nastavte ValueExpression vlastnosti a vlastnosti , PrecedenceConstrainta nastavte jeho LogicalAnd vlastnost na nepravdivou.

Následující ukázka kódu ukazuje přidání dvou úkolů do balíčku. Mezi nimi se vytvoří A, PrecedenceConstraint která zabrání spuštění druhého úkolu, dokud první úkol neskončí.

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