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

Vous pouvez exécuter des packages Integration Services selon vos 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 programme

  • Exécution d'un package par programme

Toutes les méthodes utilisées dans cette rubrique pour charger et exécuter des packages requièrent une référence à l'assembly Microsoft.SqlServer.ManagedDTS. Après avoir ajouté la référence à 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

ou

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 programme

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.

    [!REMARQUE]

    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();
    }
  }
}
Icône Integration Services (petite) Rester à jour avec Integration Services

Pour obtenir les derniers téléchargements, articles, exemples et vidéos de Microsoft, ainsi que des solutions sélectionnées par la communauté, visitez la page Integration Services sur MSDN ou TechNet :

Pour recevoir une notification automatique de ces mises à jour, abonnez-vous aux flux RSS disponibles sur la page.