Programmgesteuertes Laden und Ausführen eines lokalen PaketsLoading and Running a Local Package Programmatically

Sie können ausführen Integration ServicesIntegration Services Pakete Bedarf oder zu vorbestimmten Zeiten mit den Methoden, die in beschriebenen ausgeführte Pakete.You can run Integration ServicesIntegration Services packages as needed or at predetermined times by using the methods described in Running Packages. Mit nur wenigen Codezeilen können Sie ein Paket jedoch auch mit einer benutzerdefinierten Anwendung wie einer Windows Forms-Anwendung, einer Konsolenanwendung, einem Webformular oder Webdienst von ASP.NET oder einem Windows-Dienst ausführen.However, with only a few lines of code, you can also run a package from a custom application such as a Windows Forms application, a console application, an ASP.NET Web form or Web service, or a Windows service.

In diesem Thema erläutert:This topic discusses:

  • Programmgesteuertes Laden eines PaketsLoading a package programmatically

  • Programmgesteuertes Ausführen eines PaketsRunning a package programmatically

    Alle Methoden in diesem Thema verwendet, um zu laden und Ausführen von Paketen erfordern einen Verweis auf die Microsoft.SqlServer.ManagedDTS Assembly.All of the methods used in this topic to load and run packages require a reference to the Microsoft.SqlServer.ManagedDTS assembly. Nach dem Hinzufügen des Verweises in einem neuen Projekt importieren der Microsoft.SqlServer.Dts.Runtime Namespace mit einem mit oder Importe Anweisung.After adding the reference in a new project, import the Microsoft.SqlServer.Dts.Runtime namespace with a using or Imports statement.

Programmgesteuertes Laden eines PaketsLoading a Package Programmatically

Rufen Sie unabhängig davon, ob ein Paket lokal oder remote gespeichert ist, zum programmgesteuerten Laden des Pakets auf dem lokalen Computer eine der folgenden Methoden auf:To load a package programmatically on the local computer, whether the package is stored locally or remotely, call one of the following methods:

SpeicherortStorage Location Aufzurufende MethodeMethod to Call
FileFile LoadPackage
SSIS-PaketspeicherSSIS Package Store LoadFromDtsServer
SQL ServerSQL Server LoadFromSqlServer

Wichtig

Die Methoden der Application-Klasse zum Arbeiten mit dem SSIS-Paketspeicher unterstützen nur ".", localhost oder den Namen des lokalen Servers.The methods of the Application class for working with the SSIS Package Store only support ".", localhost, or the server name for the local server. Sie können "(local)" nicht verwenden.You cannot use "(local)".

Programmgesteuertes Ausführen eines PaketsRunning a Package Programmatically

Das Entwickeln einer benutzerdefinierten Anwendung in verwaltetem Code zum Ausführen eines Pakets auf dem lokalen Computer erfordert den folgenden Ansatz.Developing a custom application in managed code that runs a package on the local computer requires the following approach. Die hier zusammengefassten Schritte werden in dem folgenden Beispiel einer Konsolenanwendung veranschaulicht.The steps summarized here are demonstrated in the sample console application that follows.

So führen Sie ein Paket auf dem lokalen Computer programmgesteuert ausTo run a package on the local computer programmatically

  1. Starten Sie die Visual Studio-Entwicklungsumgebung, und erstellen Sie eine neue Anwendung in der gewünschten Entwicklungssprache.Start the Visual Studio development environment, and create a new application in your preferred development language. In diesem Beispiel wird eine Konsolenanwendung verwendet. Sie können ein Paket jedoch auch mit einer Windows Forms-Anwendung, einem Webformular oder Webdienst von ASP.NET oder einem Windows-Dienst ausführen.This example uses a console application; however you can also run a package from a Windows Forms application, an ASP.NET Web form or Web service, or a Windows service.

  2. Auf der Projekt Menü klicken Sie auf Verweis hinzufügen und Hinzufügen eines Verweises auf Microsoft.SqlServer.manageddts.dll entspricht.On the Project menu, click Add Reference and add a reference to Microsoft.SqlServer.ManagedDTS.dll. Klicken Sie auf OK.Click OK.

  3. Mithilfe der Visual Basic Importe -Anweisung oder die C#- mit -Anweisung zum Importieren der Microsoft.SqlServer.Dts.Runtime Namespace.Use the Visual Basic Imports statement or the C# using statement to import the Microsoft.SqlServer.Dts.Runtime namespace.

  4. Fügen Sie den folgenden Code in der Hauptroutine hinzu.Add the following code in the main routine. Die abgeschlossene Konsolenanwendung sollte wie im folgenden Beispiel dargestellt aussehen.The completed console application should look like the following example.

    Hinweis

    Im Beispielcode wird das Laden des Pakets aus dem Dateisystem mithilfe der LoadPackage-Methode veranschaulicht.The sample code demonstrates loading the package from the file system by using the LoadPackage method. Aber auch Laden des Pakets aus der MSDB-Datenbank durch Aufrufen kann die LoadFromSqlServer -Methode, oder aus der Integration ServicesIntegration Services -Paketspeicher durch Aufrufen der LoadFromDtsServer Methode.However you can also load the package from the MSDB database by calling the LoadFromSqlServer method, or from the Integration ServicesIntegration Services package store by calling the LoadFromDtsServer method.

  5. Führen Sie das Projekt aus.Run the project. Der Beispielcode führt das CalculatedColumns-Beispielpaket, die mit installiert wird die SQL ServerSQL Server Beispiele.The sample code executes the CalculatedColumns sample package that is installed with the SQL ServerSQL Server samples. Das Ergebnis der Paketausführung wird im Konsolenfenster angezeigt.The result of package execution is displayed in the console window.

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

Aufzeichnen von Ereignissen aus einem ausgeführten PaketCapturing Events from a Running Package

Wenn Sie ein Paket wie im vorhergehenden Beispiel dargestellt programmgesteuert ausführen, sollten Sie auch zum Erfassen von Fehlern und anderen Ereignissen, die auftreten, da das Paket ausgeführt wird.When you run a package programmatically as shown in the preceding sample, you may also want to capture errors and other events that occur as the package executes. 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.You can accomplish this by adding a class that inherits from the DefaultEvents class, and by passing a reference to that class when you load the package. 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.Although the following example captures only the OnError event, there are many other events that the DefaultEvents class lets you capture.

So führen Sie ein Paket auf dem lokalen Computer programmgesteuert aus und zeichnen Paketereignisse aufTo run a package on the local computer programmatically and capture package events

  1. Führen Sie die Schritte im vorangehenden Beispiel aus, um ein Projekt für dieses Beispiel zu erstellen.Follow the steps in the preceding example to create a project for this example.

  2. Fügen Sie den folgenden Code in der Hauptroutine hinzu.Add the following code in the main routine. Die abgeschlossene Konsolenanwendung sollte wie im folgenden Beispiel dargestellt aussehen.The completed console application should look like the following example.

  3. Führen Sie das Projekt aus.Run the project. Der Beispielcode führt das CalculatedColumns-Beispielpaket, die mit installiert wird die SQL ServerSQL Server Beispiele.The sample code executes the CalculatedColumns sample package that is installed with the SQL ServerSQL Server samples. Das Ergebnis der Paketausführung wird zusammen mit den aufgetretenen Fehlern im Konsolenfenster angezeigt.The result of package execution is displayed in the console window, along with any errors that occur.

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

Siehe auchSee Also

Grundlegendes zu den Unterschieden zwischen lokalen und Remote-Ausführung Understanding the Differences between Local and Remote Execution
Programmgesteuerten laden und Ausführen eines Remotepakets Loading and Running a Remote Package Programmatically
Laden der Ausgabe eines lokalen PaketsLoading the Output of a Local Package