Programowe ładowanie i uruchamianie pakietu lokalnego

Dotyczy:SQL Server Środowisko SSIS Integration Runtime w usłudze Azure Data Factory

Możesz uruchamiać pakiety Integration Services w razie potrzeby lub w określonych godzinach, korzystając z metod opisanych w Running Packages. Jednak zaledwie kilka linii kodu można również uruchomić pakiet z niestandardowej aplikacji, takiej jak aplikacja Windows Forms, konsola, formularz ASP.NET lub usługa webowa lub usługa Windows.

Ten temat dotyczy:

  • Programowe ładowanie pakietu

  • Programowe uruchamianie pakietu

Wszystkie metody używane w tym temacie do ładowania i uruchamiania pakietów wymagają odniesienia do Microsoft. SqlServer.ManagedDTS assembly. Po dodaniu referencji w nowym projekcie importuj Microsoft.SqlServer.Dts.Runtime przestrzeń nazw za pomocą instrukcji using lub Imports .

Programowe ładowanie pakietu

Aby programowo załadować pakiet na komputerze lokalnym, niezależnie od tego, czy jest przechowywany lokalnie, czy zdalnie, wywołaj jedną z następujących metod:

Lokalizacja przechowywania Metoda wywoływania
Plik LoadPackage
Magazyn pakietów SSIS LoadFromDtsServer
SQL Server LoadFromSqlServer

Ważna

Metody Application tej klasy do pracy z SSIS Package Store obsługują jedynie ".", localhost lub nazwę serwera lokalnego. Nie możesz użyć "(lokalnie)".

Programowe uruchamianie pakietu

Opracowanie niestandardowej aplikacji w kodzie zarządzanym, która uruchamia pakiet na komputerze lokalnym, wymaga następującego podejścia. Kroki podsumowane tutaj są przedstawione w przykładowej aplikacji konsolowej, która następuje poniżej.

Programowanie uruchamiania pakietu na komputerze lokalnym

  1. Rozpocznij środowisko programistyczne Visual Studio i stwórz nową aplikację w preferowanym przez siebie języku programistycznym. Ten przykład wykorzystuje aplikację konsolową; jednak możesz także uruchomić pakiet z aplikacji Windows Forms, formularza webowego ASP.NET lub usługi webowej albo usługi Windows.

  2. W menu Project kliknij Dodaj Referencję i dodaj referencję do Microsoft.SqlServer.ManagedDTS.dll. Kliknij przycisk OK.

  3. Użyj instrukcji Visual Basic Imports lub C# using do importu Microsoft. SqlServer.Dts.Runtime namespace.

  4. Dodaj następujący kod do głównej procedury. Ukończona aplikacja konsolowa powinna wyglądać jak następujący przykład.

    Note

    Przykładowy kod pokazuje ładowanie pakietu z systemu plików za pomocą tej metody LoadPackage . Możesz jednak także załadować pakiet z bazy danych MSDB, wywołując metodę LoadFromSqlServer , lub z magazynu pakietów Integration Services, wywołując metodę LoadFromDtsServer .

  5. Uruchamianie projektu. Przykładowy kod wykonuje pakiet przykładowy CalculatedColumns, który jest zainstalowany wraz z przykładami SQL Server. Wynik wykonania pakietu jest wyświetlany w oknie konsoli.

Przykładowy kod

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

Rejestrowanie wydarzeń z pakietu biegowego

Gdy uruchamiasz pakiet programowo jak pokazano w poprzednim przykładzie, możesz również chcieć rejestrować błędy i inne zdarzenia, które pojawiają się podczas wykonywania pakietu. Możesz to osiągnąć, dodając klasę, która dziedziczy z tej DefaultEvents klasy, oraz przekazując referencję do tej klasy podczas ładowania pakietu. Chociaż poniższy przykład obejmuje tylko OnError samo zdarzenie, istnieje wiele innych zdarzeń, które klasa DefaultEvents pozwala uchwycić.

Programowanie uruchamiania pakietu na lokalnym komputerze i przechwytywania zdarzeń pakietu

  1. Wykonaj kroki z poprzedniego przykładu, aby stworzyć projekt dla tego przykładu.

  2. Dodaj następujący kod do głównej procedury. Ukończona aplikacja konsolowa powinna wyglądać jak następujący przykład.

  3. Uruchamianie projektu. Przykładowy kod wykonuje pakiet przykładowy CalculatedColumns, który jest zainstalowany wraz z przykładami SQL Server. Wynik wykonania pakietu jest wyświetlany w oknie konsoli wraz z ewentualnymi wystąpieniami błędów.

Przykładowy kod

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