Partager via


Chargement et exécution d'un package local par programme

S’applique à : SQL Server SSIS Integration Runtime dans Azure Data Factory

Vous pouvez exécuter des packages Integration Services selon les besoins ou à des moments prédéterminés à l’aide des méthodes décrites dans Exécution de packages. Toutefois, quelques lignes de code vous suffisent pour exécuter également un package à partir d'une application personnalisée, telle qu'une application Windows Forms, une application console, un ASP.NET Web Form, un service Web ASP.NET ou un service Windows.

Cette rubrique traite des points suivants :

  • Chargement d’un package par programmation

  • Exécution d'un package par programme

Toutes les méthodes utilisées dans cette rubrique pour charger et exécuter des packages nécessitent une référence à l’assembly Microsoft.SqlServer.ManagedDTS. Après avoir ajouté la référence dans un nouveau projet, importez l’espace de noms Microsoft.SqlServer.Dts.Runtime à l’aide d’une instruction using ou Imports.

Chargement d'un package par programme

Pour charger par programme un package sur l'ordinateur local, que le package soit stocké localement ou à distance, appelez l'une des méthodes suivantes :

Emplacement de stockage Méthode à appeler
Fichier LoadPackage
Magasin de packages SSIS LoadFromDtsServer
SQL Server LoadFromSqlServer

Important

Les méthodes de la classe Application qui permettent d'utiliser le magasin de packages SSIS prennent uniquement en charge « . », localhost ou le nom du serveur local. Vous ne pouvez pas utiliser « (local) ».

Exécution d’un package par programmation

Le développement d'une application personnalisée dans du code managé qui exécute un package sur l'ordinateur local requiert la procédure suivante. Les étapes résumées ci-dessous sont présentées dans l'exemple d'application console qui suit.

Pour exécuter par programme un package sur l'ordinateur local

  1. Démarrez l'environnement de développement Visual Studio et créez une application dans votre langage de développement par défaut. Cet exemple utilise une application console. Cependant, vous pouvez également exécuter un package à partir d'une application Windows Forms, un ASP.NET Web Form, un service Web ASP.NET ou un service Windows.

  2. Dans le menu Projet, cliquez sur Ajouter une référence, puis ajoutez une référence à Microsoft.SqlServer.ManagedDTS.dll. Cliquez sur OK.

  3. Utilisez l’instruction Visual Basic Imports ou l’instruction C# using pour importer l’espace de noms Microsoft.SqlServer.Dts.Runtime.

  4. Ajoutez le code suivant dans la routine principale. L'application console terminée doit ressembler à l'exemple suivant.

    Notes

    L'exemple de code montre le chargement du package à partir du système de fichiers à l'aide de la méthode LoadPackage. Toutefois, vous pouvez également charger le package à partir de la base de données MSDB en appelant la méthode LoadFromSqlServer, ou à partir du magasin de packages Integration Services en appelant la méthode LoadFromDtsServer.

  5. Exécutez le projet. L’exemple de code exécute l’exemple de package CalculatedColumns installé avec les exemples SQL Server. Le résultat de l'exécution du package est affiché dans la fenêtre de la console.

Exemple de code

Imports Microsoft.SqlServer.Dts.Runtime  
  
Module Module1  
  
  Sub Main()  
  
    Dim pkgLocation As String  
    Dim pkg As New Package  
    Dim app As New Application  
    Dim pkgResults As DTSExecResult  
  
    pkgLocation = _  
      "C:\Program Files\Microsoft SQL Server\100\Samples\Integration Services" & _  
      "\Package Samples\CalculatedColumns Sample\CalculatedColumns\CalculatedColumns.dtsx"  
    pkg = app.LoadPackage(pkgLocation, Nothing)  
    pkgResults = pkg.Execute()  
  
    Console.WriteLine(pkgResults.ToString())  
    Console.ReadKey()  
  
  End Sub  
  
End Module  
using System;  
using Microsoft.SqlServer.Dts.Runtime;  
  
namespace RunFromClientAppCS  
{  
  class Program  
  {  
    static void Main(string[] args)  
    {  
      string pkgLocation;  
      Package pkg;  
      Application app;  
      DTSExecResult pkgResults;  
  
      pkgLocation =  
        @"C:\Program Files\Microsoft SQL Server\100\Samples\Integration Services" +  
        @"\Package Samples\CalculatedColumns Sample\CalculatedColumns\CalculatedColumns.dtsx";  
      app = new Application();  
      pkg = app.LoadPackage(pkgLocation, null);  
      pkgResults = pkg.Execute();  
  
      Console.WriteLine(pkgResults.ToString());  
      Console.ReadKey();  
    }  
  }  
}  

Capture d'événements à partir d'un package en cours d'exécution

Lorsque vous exécutez un package par programme comme dans l'exemple précédent, vous pouvez également capturer les erreurs et les autres événements qui se produisent lors de l'exécution du package. Pour cela, vous devez ajouter une classe qui hérite de la classe DefaultEvents et passer une référence à cette classe lorsque vous chargez le package. Bien que l'exemple suivant capture uniquement l'événement OnError, la classe DefaultEvents vous permet de capturer de nombreux autres événements.

Pour exécuter par programme un package sur l'ordinateur local et capturer les événements du package

  1. Suivez les étapes dans l'exemple précédent pour créer un projet à utiliser dans cet exemple.

  2. Ajoutez le code suivant dans la routine principale. L'application console terminée doit ressembler à l'exemple suivant.

  3. Exécutez le projet. L’exemple de code exécute l’exemple de package CalculatedColumns installé avec les exemples SQL Server. Le résultat de l'exécution du package est affiché dans la fenêtre de la console, avec toutes les erreurs qui se sont éventuellement produites.

Exemple de code

Imports Microsoft.SqlServer.Dts.Runtime  
  
Module Module1  
  
  Sub Main()  
  
    Dim pkgLocation As String  
    Dim pkg As New Package  
    Dim app As New Application  
    Dim pkgResults As DTSExecResult  
  
    Dim eventListener As New EventListener()  
  
    pkgLocation = _  
      "C:\Program Files\Microsoft SQL Server\100\Samples\Integration Services" & _  
      "\Package Samples\CalculatedColumns Sample\CalculatedColumns\CalculatedColumns.dtsx"  
    pkg = app.LoadPackage(pkgLocation, eventListener)  
    pkgResults = pkg.Execute(Nothing, Nothing, eventListener, Nothing, Nothing)  
  
    Console.WriteLine(pkgResults.ToString())  
    Console.ReadKey()  
  
  End Sub  
  
End Module  
  
Class EventListener  
  Inherits DefaultEvents  
  
  Public Overrides Function OnError(ByVal source As Microsoft.SqlServer.Dts.Runtime.DtsObject, _  
    ByVal errorCode As Integer, ByVal subComponent As String, ByVal description As String, _  
    ByVal helpFile As String, ByVal helpContext As Integer, _  
    ByVal idofInterfaceWithError As String) As Boolean  
  
    ' Add application-specific diagnostics here.  
    Console.WriteLine("Error in {0}/{1} : {2}", source, subComponent, description)  
    Return False  
  
  End Function  
  
End Class  
using System;  
using Microsoft.SqlServer.Dts.Runtime;  
  
namespace RunFromClientAppWithEventsCS  
{  
  class MyEventListener : DefaultEvents  
  {  
    public override bool OnError(DtsObject source, int errorCode, string subComponent,   
      string description, string helpFile, int helpContext, string idofInterfaceWithError)  
    {  
      // Add application-specific diagnostics here.  
      Console.WriteLine("Error in {0}/{1} : {2}", source, subComponent, description);  
      return false;  
    }  
  }  
  class Program  
  {  
    static void Main(string[] args)  
    {  
      string pkgLocation;  
      Package pkg;  
      Application app;  
      DTSExecResult pkgResults;  
  
      MyEventListener eventListener = new MyEventListener();  
  
      pkgLocation =  
        @"C:\Program Files\Microsoft SQL Server\100\Samples\Integration Services" +  
        @"\Package Samples\CalculatedColumns Sample\CalculatedColumns\CalculatedColumns.dtsx";  
      app = new Application();  
      pkg = app.LoadPackage(pkgLocation, eventListener);  
      pkgResults = pkg.Execute(null, null, eventListener, null, null);  
  
      Console.WriteLine(pkgResults.ToString());  
      Console.ReadKey();  
    }  
  }  
}  

Voir aussi

Présentation des différences entre l’exécution locale et l’exécution distante
Chargement et exécution d'un package distant par programme
Chargement de la sortie d'un package local