Programmgesteuertes Auflisten verfügbarer Pakete

Wenn Sie programmgesteuert mit Integration Services-Paketen arbeiten, möchten Sie u. U. bestimmen, ob ein einzelnes Paket oder ein einzelner Ordner vorhanden ist, oder die gespeicherten Pakete auflisten, die zum Laden und Ausführen verfügbar sind. Die Application-Klasse des Microsoft.SqlServer.Dts.Runtime-Namespace stellt eine Reihe von Methoden bereit, um diese Anforderungen zu erfüllen.

In diesem Thema

  • Bestimmen, ob ein Paket oder ein Ordner vorhanden ist

  • Auflisten verfügbarer Pakete

    • Beispiel (SSIS-Paketspeicher)

    • Beispiel (SQL Server)

Informationen zum programmgesteuerten Laden und Ausführen von Paketen finden Sie unter Programmgesteuertes Laden und Ausführen eines lokalen Pakets und Programmgesteuertes Laden und Ausführen eines Remotepakets. Informationen zur programmgesteuerten Verwaltung von Paketen und Ordnern finden Sie unter Programmgesteuerte Verwaltung von Paketen und Ordnern.

Alle in diesem Thema erläuterten Methoden erfordern einen Verweis auf die Microsoft.SqlServer.ManagedDTS-Assembly. Nachdem Sie den Verweis in einem neuen Projekt hinzugefügt haben, importieren Sie den Microsoft.SqlServer.Dts.Runtime-Namespace mit einer using- oder Imports-Anweisung.

Wichtiger HinweisWichtig

Die Methoden der Application-Klasse zum Arbeiten mit dem SSIS-Paketspeicher unterstützen nur ".", localhost oder den Namen des lokalen Servers. Sie können "(local)" nicht verwenden.

Bestimmen, ob ein Paket oder ein Ordner vorhanden ist

Um programmgesteuert zu ermitteln, ob ein gespeichertes Paket vorhanden ist, rufen Sie eine der folgenden Methoden auf, bevor Sie versuchen, es zu laden und auszuführen:

Speicherort

Aufzurufende Methode

SSIS-Paketspeicher

ExistsOnDtsServer

SQL Server

ExistsOnSqlServer

Um programmgesteuert zu ermitteln, ob ein Ordner vorhanden ist, rufen Sie eine der folgenden Methoden auf, bevor Sie versuchen, die darin gespeicherten Pakete aufzulisten:

Speicherort

Aufzurufende Methode

SSIS-Paketspeicher

FolderExistsOnDtsServer

SQL Server

FolderExistsOnSqlServer

Zurück zum Anfang

Auflisten verfügbarer Pakete

Rufen Sie eine der folgenden Methoden auf, um eine Liste von gespeicherten Paketen programmgesteuert abzurufen:

Speicherort

Aufzurufende Methode

SSIS-Paketspeicher

GetDtsServerPackageInfos

SQL Server

GetPackageInfos

Die folgenden Beispiele sind Konsolenanwendungen, die die Verwendung dieser Methoden veranschaulichen.

Beispiel (SSIS-Paketspeicher)

Verwenden Sie die GetDtsServerPackageInfos-Methode, um im SSIS-Paketspeicher gespeicherte Pakete aufzulisten. Die Standardspeicherorte, die vom SSIS-Paketspeicher verwaltet werden, sind "Dateisystem" und "MSDB". Sie können zusätzliche logische Ordner innerhalb dieser Speicherorte erstellen.

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();

    }

  }

}

Zurück zum Anfang

Beispiel (SQL Server)

Verwenden Sie die GetPackageInfos-Methode, um Integration Services-Pakete aufzulisten, die in einer Instanz von SQL Server gespeichert sind.

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();

    }
  }
}

Zurück zum Anfang

Integration Services (kleines Symbol) Bleiben Sie mit Integration Services auf dem neuesten Stand

Die neuesten Downloads, Artikel, Beispiele und Videos von Microsoft sowie ausgewählte Lösungen aus der Community finden Sie auf MSDN auf der Integration Services-Seite:


Abonnieren Sie die auf der Seite verfügbaren RSS-Feeds, um automatische Benachrichtigungen zu diesen Updates zu erhalten.

Siehe auch

Konzepte

Paketverwaltung (SSIS-Dienst)