Programmgesteuertes Ausführen eines SSIS-Pakets auf dem lokalen Computer

Mit nur einigen Zeilen verwaltetem Code und den richtigen erforderlichen Komponenten auf dem lokalen Computer können Sie in einer benutzerdefinierten Anwendung ein Paket ausführen. Die benutzerdefinierte Anwendung kann eine Windows Forms-Anwendung, eine Konsolenanwendung, ein ASP.NET-Webformular oder -Webdienst oder ein Windows-Dienst sein.

HinweisHinweis

Sie können Integration Services-Pakete mit einer der im Abschnitt Ausführen von Paketen beschriebenen Methoden bei Bedarf oder zu vorbestimmten Zeiten ausführen.

Kapitel in diesem Thema

  • Erforderliche Komponenten für den lokalen Computer

  • Erstellen einer Anwendung, die ein Paket auf den lokalen Computer lädt und ausführt

    • Methoden, mit denen Pakete geladen werden

    • Methode, mit denen Pakete ausgeführt werden

    • Beispiel

  • Aufzeichnen von Ereignissen aus einem ausgeführten Paket

Erforderliche Komponenten für den lokalen Computer

Ein Paket wird auf dem gleichen Computer ausgeführt wie die Anwendung, die das Paket startet. Wenn daher eine Anwendung ein Paket lädt, das auf einem anderen Computer remote gespeichert ist, wird das Paket auf dem lokalen Computer ausgeführt.

Als Ergebnis gibt es für das Laden und Ausführen eines Pakets auf dem lokalen Computer mehrere erforderliche Komponenten:

  • Wenn das Paket Verweise auf Ressourcen enthält, die extern für das Paket sind, müssen diese Verweise auf dem lokalen Computer gültig sein. Diese Verweise enthalten Verbindungszeichenfolgen, Server, Dateien, Meldungswarteschlangen usw.

    HinweisHinweis

    Wenn der lokale Computer keine gültigen Verweise auf die Ressourcen aufweist, die extern für das Paket sind, können Sie das Paket nicht auf dem lokalen Computer ausführen. Stattdessen müssen Sie sicherstellen, dass das Paket auf dem Remotecomputer ausgeführt wird. Weitere Informationen finden Sie unter Programmgesteuertes Ausführen eines SSIS-Pakets auf einem Remotecomputer.

  • Sie müssen über alle Berechtigungen verfügen, die das Paket erfordert, um auf Datenquellen und andere Ressourcen auf oder von dem lokalen Computer zuzugreifen.

  • Sie können ein Paket außerhalb der Entwicklungsumgebung (Business Intelligence Development Studio) nur auf Computern ausführen, auf denen Integration Services installiert ist.

    HinweisHinweis

    Die Bedingungen der SQL Server-Lizenz erlauben Ihnen nicht, Integration Services auf zusätzlichen Computern zu installieren. (Bei Integration Services handelt es sich um eine Serverkomponente, die nicht an Clientcomputer oder lokale Computer weitergegeben werden darf.) Wenn Integration Services nicht auf dem lokalen Computer installiert ist und auch nicht installiert werden kann, müssen Sie sicherstellen, dass das Paket auf dem Remotecomputer ausgeführt wird. Weitere Informationen finden Sie unter Programmgesteuertes Ausführen eines SSIS-Pakets auf einem Remotecomputer.

Erstellen einer Anwendung, die ein SSIS-Paket auf den lokalen Computer lädt und ausführt

Alle in diesem Thema erläuterten Methoden zum programmgesteuerten Laden und Ausführen von Paketen erfordern einen Verweis auf die Microsoft.SqlServer.ManagedDTS-Assembly. Wenn Sie diesen Verweis in einem neuen Projekt hinzugefügt haben, importieren Sie den Microsoft.SqlServer.Dts.Runtime-Namespace mit einer using-Anweisung in C# oder einer Imports-Anweisung in Visual Basic.

Methoden, mit denen SSIS-Pakete geladen werden

Rufen Sie unabhängig davon, ob ein Paket lokal oder remote gespeichert ist, zum programmgesteuerten Laden des Pakets auf dem lokalen Computer eine der Methoden in der folgenden Tabelle auf: All diese Methoden geben ein Package-Objekt zurück, mit dem Sie dann das Paket ausführen oder die Eigenschaften des Pakets untersuchen können.

Speicherort

Aufzurufende Methode

Datei

LoadPackage

- oder -

LoadPackage

SSIS-Paketspeicher

LoadFromDtsServer

HinweisHinweis
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.

SQL Server

LoadFromSqlServer

Methode, mit der das SSIS-Paket ausgeführt wird

Um programmgesteuert auf dem lokalen Computer ein Paket auszuführen, laden Sie das Paket wie im vorherigen Abschnitt beschrieben und rufen dann die Execute-Methode des Pakets auf.

Beispiel

Entwickeln Sie mittels des folgenden Verfahrens eine benutzerdefinierte Anwendung in verwaltetem Code, die ein Paket auf den lokalen Computer lädt und dort ausführt. Im Anschluss an das Verfahren finden Sie eine Beispielkonsolenanwendung, die die Schritte des Verfahrens veranschaulicht.

So laden und führen Sie ein Paket auf dem lokalen Computer programmgesteuert aus

  1. Starten Sie die Visual Studio-Entwicklungsumgebung, und erstellen Sie eine neue Anwendung in der gewünschten Entwicklungssprache.

    In diesem Beispiel wird eine Konsolenanwendung verwendet. Sie können ein Paket jedoch auch mit einer Windows Forms-Anwendung, einem ASP.NET-Webformular oder -Webdienst oder einem Windows-Dienst ausführen.

  2. Klicken Sie im Menü Projekt auf Verweis hinzufügen, und fügen Sie einen Verweis auf Microsoft.SqlServer.ManagedDTS.dll hinzu. Klicken Sie auf OK.

  3. Verwenden Sie in Visual Basic die Imports-Anweisung oder in C# die using-Anweisung, um den Microsoft.SqlServer.Dts.Runtime-Namespace zu importieren.

  4. Fügen Sie in der Hauptroutine den Beispielcode hinzu, der dieser Prozedur folgt.

    Die abgeschlossene Konsolenanwendung sollte wie der Beispielcode im folgenden Abschnitt aussehen.

    HinweisHinweis

    Im Beispielcode wird das Laden des Pakets aus dem Dateisystem mithilfe der LoadPackage-Methode veranschaulicht. Sie können das Paket jedoch auch aus der msdb-Datenbank durch Aufrufen der LoadFromSqlServer-Methode oder aus dem Integration Services-Paketspeicher durch Aufrufen der LoadFromDtsServer-Methode laden.

  5. Führen Sie das Projekt aus.

    Der Beispielcode führt das CalculatedColumns-Beispielpaket aus, das mit den SQL Server-Beispielen installiert wird. Das Ergebnis der Paketausführung wird im Konsolenfenster angezeigt.

Beispielcode

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

Aufzeichnen von Ereignissen aus einem ausgeführten SSIS-Paket

Wenn ein Paket wie im vorigen Beispiel dargestellt programmgesteuert ausgeführt wird, sollen möglicherweise auch Fehler und andere Ereignisse aufgezeichnet werden, die bei der Ausführung des Pakets auftreten. Sie können dies erreichen, indem Sie eine Klasse hinzufügen, die von der DefaultEvents-Klasse erbt, und beim Laden des Pakets einen Verweis auf diese Klasse übergeben. Auch wenn im folgenden Beispiel nur die OnError-Ereignisse aufgezeichnet werden, gibt es noch viele weitere Ereignisse, die mithilfe der DefaultEvents-Klasse aufgezeichnet werden können.

So führen Sie ein Paket auf dem lokalen Computer programmgesteuert aus und zeichnen Paketereignisse auf

  1. Führen Sie die Schritte aus dem Beispiel im vorherigen Abschnitt aus, um ein Projekt für dieses Beispiel zu erstellen.

  2. Fügen Sie in der Hauptroutine den Beispielcode hinzu, der dieser Prozedur folgt.

    Die abgeschlossene Konsolenanwendung sollte wie im folgenden Beispiel dargestellt aussehen.

  3. Führen Sie das Projekt aus.

    Der Beispielcode führt das CalculatedColumns-Beispielpaket aus, das mit den SQL Server-Beispielen installiert wird. Das Ergebnis der Paketausführung wird zusammen mit den aufgetretenen Fehlern im Konsolenfenster angezeigt.

Beispielcode

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();
    }
  }
}
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 Aktualisierungen zu erhalten.