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
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.
En el menú Proyecto, haga clic en Agregar referencia y agregue una referencia a Microsoft.SqlServer.ManagedDTS.dll. Haga clic en OK.
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.
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.
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
Siga los pasos del ejemplo anterior para crear un proyecto para este ejemplo.
Agregue el código siguiente en la rutina principal. La aplicación de consola completada se debe parecer al ejemplo siguiente.
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