Načítání a spouštění místního balíčku prostřednictvím kódu programu

Platí pro:SQL Server SSIS Integration Runtime v rámci Azure Data Factory

Integrační služby můžete spouštět podle potřeby nebo v předem určených časech pomocí metod popsaných v Running Packages. Nicméně s pouhými několika řádky kódu můžete také spustit balíček z vlastní aplikace, jako je aplikace model Windows Forms, konzolová aplikace, webový formulář nebo webová služba ASP.NET, nebo služba Windows.

Toto téma se zabývá:

  • Načítání balíčku programově

  • Programové spuštění balíčku

Všechny metody používané v tomto tématu pro načítání a spuštění balíčků vyžadují odkaz na Microsoft. SqlServer.ManagedDTS assembler. Po přidání reference do nového projektu importujte Microsoft.SqlServer.Dts.Runtime jmenný prostor pomocí příkazu using nebo Imports .

Načítání balíčku programovaně

Pro programové načtení balíčku na lokálním počítači, ať už je uložen lokálně nebo vzdáleně, použijte jednu z následujících metod:

Umístění úložiště Metoda volání
Soubor LoadPackage
SSIS Package Store LoadFromDtsServer
SQL Server LoadFromSqlServer

Important

Metody této třídy Application pro práci se SSIS Package Store podporují pouze ".", localhost nebo název serveru pro lokální server. Nemůžete použít "(lokální)".

Programové spuštění balíčku

Vývoj vlastní aplikace ve spravovaném kódu, která spustí balíček na lokálním počítači, vyžaduje následující přístup. Kroky shrnuté zde jsou ukázány v následující ukázkové aplikaci konzole.

Pro programové spuštění balíčku na lokálním počítači

  1. Začněte vývojové prostředí Visual Studio a vytvořte novou aplikaci ve vašem preferovaném vývojovém jazyce. Tento příklad používá konzolovou aplikaci; ale můžete také spustit balíček z aplikace model Windows Forms, webového formuláře nebo webové služby ASP.NET, případně služby Windows.

  2. V menu Project klikněte na Přidat odkaz a přidejte odkaz na Microsoft.SqlServer.ManagedDTS.dll. Klikněte na OK.

  3. Použijte příkaz Visual Basic Imports nebo příkaz C# using k importu Microsoft. SqlServer.Dts.Runtime jmenný prostor.

  4. Přidejte následující kód do hlavní rutiny. Dokončená konzolová aplikace by měla vypadat jako následující příklad.

    Note

    Ukázkový kód ukazuje načítání balíčku ze souborového systému pomocí této metody LoadPackage . Balíček však můžete také načíst z databáze MSDB voláním metody LoadFromSqlServer , nebo z úložiště balíčků Integration Services voláním metody LoadFromDtsServer .

  5. Spusťte projekt. Ukázkový kód spouští vzorový balíček CalculatedColumns, který je nainstalován se vzorky SQL Server. Výsledek spuštění balíčku se zobrazí v okně konzole.

Ukázka kódu

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

Zachycení událostí z běžícího balíčku

Když spusťujete balíček programovaně, jak je ukázáno v předchozí ukázkě, můžete také chtít zachytit chyby a další události, které nastávají při spuštění balíčku. Toho můžete dosáhnout přidáním třídy, která zdědí z této DefaultEvents třídy, a předáním odkazu na tuto třídu při načtení balíčku. Ačkoliv následující příklad zachycuje pouze událost, OnError existuje mnoho dalších událostí, které třída DefaultEvents umožňuje zachytit.

Programově spustit balíček na lokálním počítači a zachytit události balíčku

  1. Postupujte podle kroků v předchozím příkladu a vytvořte projekt pro tento příklad.

  2. Přidejte následující kód do hlavní rutiny. Dokončená konzolová aplikace by měla vypadat jako následující příklad.

  3. Spusťte projekt. Ukázkový kód spouští vzorový balíček CalculatedColumns, který je nainstalován se vzorky SQL Server. Výsledek spuštění balíčku se zobrazí v okně konzole spolu s případnými chybami, které nastanou.

Ukázka kódu

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