Compartir a través de


Cargar y ejecutar un paquete local mediante programación

Se aplica a: SQL Server SSIS Integration Runtime en Azure Data Factory

Puede ejecutar paquetes de Integration Services según sea necesario o en momentos predeterminados mediante los métodos descritos en Ejecución de paquetes. Sin embargo, con solo unas líneas de código, también puede ejecutar un paquete desde una aplicación personalizada como una aplicación Windows Forms, una aplicación de consola, un formulario Web Forms o servicio web ASP.NET o un servicio de Windows.

En este tema se describe:

  • Cargar un paquete mediante programación

  • Ejecutar un paquete mediante programación

Todos los métodos utilizados en este tema para cargar y ejecutar paquetes requieren una referencia al ensamblado Microsoft.SqlServer.ManagedDTS. Después de agregar la referencia en un proyecto nuevo, importe el espacio de nombres Microsoft.SqlServer.Dts.Runtime mediante una instrucción using o Imports.

Cargar un paquete mediante programación

Para cargar un paquete mediante programación en el equipo local, tanto si el paquete está almacenado localmente como si lo está de forma remota, llame a uno de los métodos siguientes:

Ubicación de almacenamiento Método que se llama
Archivo LoadPackage
Almacén de paquetes SSIS LoadFromDtsServer
SQL Server LoadFromSqlServer

Importante

Los métodos de la clase Application para trabajar con el almacén de paquetes SSIS solamente admiten ".", localhost o el nombre del servidor local. No puede utilizar "(local)".

Ejecutar un paquete mediante programación

Al desarrollar una aplicación personalizada en código administrado que ejecuta un paquete en el equipo local, se requiere el enfoque siguiente. Los pasos resumidos aquí se muestran en la aplicación de consola de ejemplo que figura a continuación.

Para ejecutar un paquete mediante programación en el equipo local

  1. Inicie el entorno de desarrollo de Visual Studio y cree una nueva aplicación en su lenguaje de desarrollo preferido. En este ejemplo se utiliza una aplicación de consola; sin embargo, también puede ejecutar un paquete de una aplicación Windows Forms, un formulario Web Forms o servicio web ASP.NET o un servicio de Windows.

  2. En el menú Proyecto, haga clic en Agregar referencia y agregue una referencia a Microsoft.SqlServer.ManagedDTS.dll. Haga clic en OK.

  3. Use la instrucción Imports de Visual Basic o la instrucción using de C# para importar el espacio de nombres Microsoft.SqlServer.Dts.Runtime.

  4. Agregue el código siguiente en la rutina principal. La aplicación de consola completada se debe parecer al ejemplo siguiente.

    Nota:

    En el código de ejemplo se muestra cómo cargar el paquete desde el sistema de archivos mediante el método LoadPackage. No obstante, también puede cargar el paquete desde la base de datos MSDB mediante una llamada al método LoadFromSqlServer o bien desde el almacén de paquetes de Integration Services mediante una llamada al método LoadFromDtsServer.

  5. Ejecute el proyecto. En el código de ejemplo se ejecuta el paquete de ejemplo CalculatedColumns que se instala con los ejemplos de SQL Server. El resultado de la ejecución del paquete se muestra en la ventana de la consola.

Código de ejemplo

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

Capturar eventos de un paquete en ejecución

Al ejecutar un paquete mediante programación tal como se muestra en el ejemplo anterior, también puede capturar los errores y otros eventos que se producen cuando se ejecuta el paquete. Para ello, agregue una clase que herede de la clase DefaultEvents y pase una referencia a dicha clase al cargar el paquete. Aunque en el ejemplo siguiente solamente se captura el evento OnError, hay muchos otros eventos que la clase DefaultEvents permite capturar.

Para ejecutar un paquete mediante programación en el equipo local y capturar los eventos del paquete

  1. Siga los pasos del ejemplo anterior para crear un proyecto para este ejemplo.

  2. Agregue el código siguiente en la rutina principal. La aplicación de consola completada se debe parecer al ejemplo siguiente.

  3. Ejecute el proyecto. En el código de ejemplo se ejecuta el paquete de ejemplo CalculatedColumns que se instala con los ejemplos de SQL Server. El resultado de la ejecución del paquete se muestra en la ventana de la consola, junto con cualquier error que se produzca.

Código de ejemplo

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

Consulte también

Descripción de las diferencias entre la ejecución local y remota
Cargar y ejecutar mediante programación un paquete remoto
Cargar la salida de un paquete local