Taken programmatisch verbinden

Van toepassing op:SQL Server SSIS Integration Runtime in Azure Data Factory

Een precedentiebeperking, weergegeven in het objectmodel door de PrecedenceConstraint klasse, bepaalt de volgorde waarin Executable objecten in een pakket draaien. De precedentiebeperking maakt het mogelijk dat de uitvoering van containers en taken in een pakket afhankelijk is van het resultaat van de uitvoering van een vorige taak of container. Precedentiebeperkingen worden vastgesteld tussen paren objecten Executable door de Add methode van de PrecedenceConstraints collectie op het containerobject aan te roepen. Nadat je een constraint hebt gemaakt tussen twee uitvoerbare objecten, stel je de Value eigenschap in om de criteria vast te stellen voor het uitvoeren van het tweede uitvoerbare bestand dat in de constraint is gedefinieerd.

Je kunt zowel een constraint als een expressie gebruiken in één precedentie-constraint, afhankelijk van de waarde die je voor de EvalOp eigenschap specificeert, zoals beschreven in de volgende tabel:

Waarde van de EvalOp-eigendom Description
Constraint Specificeert dat het uitvoeringsresultaat bepaalt of de begrensde container of taak wordt uitgevoerd. Stel de Value eigenschap van de PrecedenceConstraint op de gewenste waarde uit de DTSExecResult opsomming.
Expression Specificeert dat de waarde van een expressie bepaalt of de begrensde container of taak wordt uitgevoerd. Stel de Expression eigenschap van de PrecedenceConstraint.
ExpressionAndConstraint Specificeert dat het constraint-resultaat moet optreden en dat de expressie moet evalueren zodat de constrained container of taak kan worden uitgevoerd. Stel zowel de Value en de Expression eigenschappen van de PrecedenceConstraint, en zet de eigenschap ervan LogicalAndop waar.
ExpressionOrConstraint Specificeert dat ofwel het constraint-resultaat moet optreden, of de expressie moet evalueren, zodat de constrained container of taak kan draaien. Stel zowel de Value als de Expression eigenschappen van de PrecedenceConstraint, en zet de eigenschap daarvan LogicalAnd op vals.

Het volgende codevoorbeeld laat zien dat twee taken aan een pakket worden toegevoegd. Er wordt een PrecedenceConstraint tussen hen gemaakt die voorkomt dat de tweede taak wordt uitgevoerd totdat de eerste taak is voltooid.

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