Énumération des packages disponibles par programme

Lors de l'utilisation de packages Integration Services par programme, vous pouvez déterminer si un package ou un dossier individuel existe, ou énumérer les packages enregistrés qui peuvent être chargés et exécutés. La classe Application de l'espace de noms Microsoft.SqlServer.Dts.Runtime fournit différentes méthodes pour répondre à ces impératifs.

Dans cette rubrique

  • Détermination de l'existence d'un package ou dossier

  • Énumération des packages disponibles

    • Exemple (magasin de packages SSIS)

    • Exemple (SQL Server)

Pour plus d'informations sur le chargement et l'exécution de packages par programme, consultez Exécution d'un package SSIS par programme sur un ordinateur local et Exécution d'un package SSIS par programme sur un ordinateur distant. Pour plus d'informations sur la gestion de packages et de dossiers par programme, consultez Gestion des packages et des dossiers par programme.

Toutes les méthodes décrites dans cette rubrique 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.

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) ».

Détermination de l'existence d'un package ou dossier

Pour déterminer par programme si un package enregistré existe, appelez l'une des méthodes suivantes avant de tenter de le charger et l'exécuter :

Emplacement de stockage

Méthode à appeler

Magasin de packages SSIS

ExistsOnDtsServer

SQL Server

ExistsOnSqlServer

Pour déterminer par programme si un dossier existe avant de tenter de répertorier les packages stockés qu'il contient, appelez l'une des méthodes suivantes :

Emplacement de stockage

Méthode à appeler

Magasin de packages SSIS

FolderExistsOnDtsServer

SQL Server

FolderExistsOnSqlServer

Retour en haut

Énumération des packages disponibles

Pour obtenir par programme une liste des packages enregistrés, appelez l'une des méthodes suivantes :

Emplacement de stockage

Méthode à appeler

Magasin de packages SSIS

GetDtsServerPackageInfos

SQL Server

GetPackageInfos

Les exemples suivants sont des applications console qui illustrent l'utilisation de ces méthodes.

Exemple (magasin de packages SSIS)

Utilisez la méthode GetDtsServerPackageInfos pour répertorier les packages stockés dans le magasin de packages SSIS. File System et MSDB sont les emplacements de stockage par défaut gérés par le magasin de packages SSIS. Vous pouvez créer des dossiers logiques supplémentaires dans ces emplacements.

Imports Microsoft.SqlServer.Dts.Runtime

Module Module1

  Sub Main()

    Dim sqlFolder As String
    Dim sqlServer As String

    Dim ssisApplication As Application
    Dim sqlPackages As PackageInfos
    Dim sqlPackage As PackageInfo

    sqlServer = "."

    ssisApplication = New Application()

    ' Get packages stored in MSDB.
    sqlFolder = "MSDB"
    sqlPackages = ssisApplication.GetDtsServerPackageInfos(sqlFolder, sqlServer)
    If sqlPackages.Count > 0 Then
      Console.WriteLine("Packages stored in MSDB:")
      For Each sqlPackage In sqlPackages
        Console.WriteLine(sqlPackage.Name)
      Next
      Console.WriteLine()
    End If

    ' Get packages stored in the File System.
    sqlFolder = "File System"
    sqlPackages = ssisApplication.GetDtsServerPackageInfos(sqlFolder, sqlServer)
    If sqlPackages.Count > 0 Then
      Console.WriteLine("Packages stored in the File System:")
      For Each sqlPackage In sqlPackages
        Console.WriteLine(sqlPackage.Name)
      Next
    End If

    Console.Read()

  End Sub

End Module
using System;
using Microsoft.SqlServer.Dts.Runtime;

namespace EnumeratePackagesSSIS_CS
{
  class Program
  {
    static void Main(string[] args)
    {

      string sqlFolder;
      string sqlServer;

      Application ssisApplication;
      PackageInfos sqlPackages;

      sqlServer = ".";

      ssisApplication = new Application();

      // Get packages stored in MSDB.
      sqlFolder = "MSDB";
      sqlPackages = ssisApplication.GetDtsServerPackageInfos(sqlFolder, sqlServer);
      if (sqlPackages.Count > 0)
      {
        Console.WriteLine("Packages stored in MSDB:");
        foreach (PackageInfo sqlPackage in sqlPackages)
        {
          Console.WriteLine(sqlPackage.Name);
        }
        Console.WriteLine();
      }

      // Get packages stored in the File System.
      sqlFolder = "File System";
      sqlPackages = ssisApplication.GetDtsServerPackageInfos(sqlFolder, sqlServer);
      if (sqlPackages.Count > 0)
      {
        Console.WriteLine("Packages stored in the File System:");
        foreach (PackageInfo sqlPackage in sqlPackages)
        {
          Console.WriteLine(sqlPackage.Name);
        }
      }

      Console.Read();

    }

  }

}

Retour en haut

Exemple (SQL Server)

Utilisez la méthode GetPackageInfos pour répertorier les packages Integration Services stockés dans une instance de SQL Server.

Imports Microsoft.SqlServer.Dts.Runtime

Module Module1

  Sub Main()

    Dim sqlFolder As String
    Dim sqlServer As String
    Dim sqlUser As String
    Dim sqlPassword As String

    Dim ssisApplication As Application
    Dim sqlPackages As PackageInfos
    Dim sqlPackage As PackageInfo

    sqlFolder = String.Empty
    sqlServer = "(local)"
    sqlUser = String.Empty
    sqlPassword = String.Empty

    ssisApplication = New Application()

    sqlPackages = ssisApplication.GetPackageInfos(sqlFolder, sqlServer, sqlUser, sqlPassword)

    For Each sqlPackage In sqlPackages
      Console.WriteLine(sqlPackage.Name)
    Next

    Console.Read()

  End Sub

End Module
using System;
using Microsoft.SqlServer.Dts.Runtime;

namespace EnumeratePackagesSql_CS
{
  class Program
  {
    static void Main(string[] args)
    {

      string sqlFolder;
      string sqlServer;
      string sqlUser;
      string sqlPassword;

      Application ssisApplication;
      PackageInfos sqlPackages;

      sqlFolder = String.Empty;
      sqlServer = "(local)";
      sqlUser = String.Empty;
      sqlPassword = String.Empty;

      ssisApplication = new Application();

      sqlPackages = ssisApplication.GetPackageInfos(sqlFolder, sqlServer, sqlUser, sqlPassword);

      foreach (PackageInfo sqlPackage in sqlPackages)
      {
        Console.WriteLine(sqlPackage.Name);
      }

      Console.Read();

    }
  }
}

Retour en haut

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.

Voir aussi

Concepts