ejecutar un Paquete DTSX. SSIS. SQL Server
Existen
distintas formas de ejecutar un Paquete DTSX de SSIS , cada una de las cuales
puede presentar ciertas ventajas o inconvenientes según en el caso particular
en que la deseemos aplicar.
- Ejecutar un Paquete DTSX desde
Business Intelligence Development Studio (BIDS). Desde BIDS podemos crear
nuestros Proyectos de SSIS , que estarán formados por nuestros Paquetes
DTSX. Estos Paquetes DTSX se almacenarán en el File System, y NO se
almacenarán ni en SQL Server (MSDB) ni en el Package Store. Como mucho,
podremos integrar BIDS con Visual Source Safe, o en todo caso, desplegar o
publicar los Paquetes DTSX del Proyecto en un Package Store, en un
servidor SQL Server, o en otro File System. La principal ventaja de BIDS,
es que al tratarse de la herramienta de desarrollo de SSIS ,
podemos ver de forma gráfica la ejecución del Paquete DTSX, incrustar
Lectores de Datos para ver los datos que se mueven por nuestros Flujos de
Datos (Data Flows), etc. Es muy cómodo, pero sólo se trata de una
herramienta de desarrollo y se limita a la ejecución de Paquetes DTSX
almacenados en el File System.
- Ejecutar un Paquete DTSX con la
utilidad dtexec. La
utilidad dtexec es un comando de consola (es decir, a lo MS-DOS )
que permite ejecutar un paquete, independiente de que esté almacenado en
el File System, en SQL Server, o en el Package Store. En caso de
necesidad, podemos plantearnos la posibilidad de ejecutar dtexec desde el
procedimiento almacenado del sistema xp_cmdshell, con lo cual,
podríamos ejecutar un Paquete DTSX desde un simple Procedimiento
Almacenado o desde un bloque e código Transact-SQL (recordar que por
defecto, xp_cmdshell viene desactivado por seguridad, y deberá ser
activado con sp_confire o Surface Area Configuration Tool).
Cabe la posibilidad de ejecutar dtexec desde una tarea programada de Windows
, desde otra herramienta utilizada para planificación de tareas, o bien,
también se puede invocar manualmente (ejecutando un fichero BAT) o desde
otra aplicación o proceso.
Podríamos ver a dtexec como la herramienta que sustituye a la utilidad
dtsrun, que se utilizaba para el mismo propósito con SQL Server 2000.
Entre sus muchas posibilidades, está poder establecer valores a las
variables del Paquete DTSX, actualizar las cadenas de conexión
utilizadas por los Connection Managers del Paquetes, especificar
ficheros de configuración, la contraseña de decriptación si el
Paquete DTSX fué guardado cifrando la información sensible, y un largo
etc. Es decir, todas las opciones que se le pueden indicar a un Paquete
DTSX para su ejecución, se le pueden indicar utilizando dtexec.
La realidad, es que la utilidad dtexec junto a la utilidad dtutil,
hacen un equipo perfecto !!, pues esta última permite gestionar SSIS
(mover Paquetes, copiarlos, borrarlos, etc.).
Cabe destacar, que en una máquina de arquitectura x64, la instalación de SSIS
instalará dos versiones de dtsexec: la de 32-bit y la de 64-bit.
Requiere instalar SSIS en la máquina en la que se desea utilizar dtexec.
- Ejecutar un Paquete DTSX con la
utilidad dtexecui. La
utilidad dtexecui es una interfaz gráfica, que permite ejecutar un
paquete independiente de que esté almacenado en el File System, en SQL
Server, o en el Package Store. Su principal ventaja es que permite de
forma sencilla especificar todas las opciones necesarias para ejecutar un
Paquete DTSX, ofreciendo todas las opciones de dtexec pero de forma
gráfica, incluso permite generar la línea de comandos para dtsexec
desde las opciones que tengamos especificadas (vamos, que nos sirve de
chuleta).
- Ejecutar un Paquete DTSX desde
un Job del Agente de SQL Server. Desde un JOB del Agente de SQL Server, podemos añadir
un paso del tipo SQL Server Integration Services Package, y en las
propiedades de dicho paso, podemos especificar todas las opciones
necesarias para ejecutar el Paquete DTSX, del mismo modo que lo
haríamos con dtexecui. Sin embargo, el Agente de SQL Server nos permitirá
planificar la ejecución de nuestro Paquete DTSX, y disfrutar de todas las
ventajas que ofrece el Agente de SQL Server (Alertas, Operadores, etc.).
Permite ejecutar un paquete independiente de que esté almacenado en el
File System, en SQL Server, o en el Package Store.
Requiere instalar SSIS en la máquina SQL Server en la que se desea
ejecutar el JOB..
Se debe garantizar que el usuario utilizado en las Credenciales
(Credentials) de la cuenta Proxy empleada en el paso del JOB, tiene
los suficientes permisos (ej: acceso al sistema de ficheros,
conexiones de base de datos , etc.) para la ejecución del Paquete DTSX.
- Ejecutar un Paquete DTSX desde
Programación. Es
posible desde una aplicación .Net Framework (Windows Formas, ASP.Net, XML
Web Service, etc.), utilizar el modelo de objetos de SSIS (SSIS Object
Model), y con unas pocas líneas de código lograr nuestro objetivo.
Necesitaremos utilizar las clases de Microsoft.SqlServer.Dts .Runtime,
para poder cargar el Paquete DTSX (método LoadPackage) desde dónde
se encuentra almacenado (File System, Package Store o SQL Server) y
después ejecutarlo (método Execute). Puede encontrarse más
información y ejemplos en los Libros en Pantalla (BOL - Books On Line).
Requiere de un desarrollo .Net Framework 2.0, y además requiere instalar
SSIS en la máquina en la que se desean ejecutar los Paquetes DTSX.
De forma alternativa, desde una aplicación .Net Framework sería posible ejecutar
la utilidad dtexec.exe, y así también lograr nuestro objetivo. Otro
truquillo sería ejecutar un Job del Agente de SQL Server que a su
vez ejecute el Paquete DTSX que deseamos, pudiendo ejecutar dicho JOB
desde código Transact, o a través del modelo de objetos de SQL Server (SMO
- SQL Server Management Objects).
Ante todo asegurarse de que el servicio lo ejecutas
bajo un usuario administrador.
Como
conclusión, tenemos varias maneras de ejecutar nuestros Paquetes DTSX, y para
gustos, hay colores. Yo personalmente desarrollo con BIDS (evidentemente) y
prefiero ejecutar los Paquetes DTSX con el Agente de SQL Server y dejarlos
almacenados en SQL Server (es decir, en MSDB).
En cualquier
caso, debemos tener en cuenta que al desarrollar en un equipo y mover el
Paquete DTSX desarrollado a otro equipo (o incluso almacenarlo en SQL Server),
podemos encontrarnos con problemas relativos a seguridad, en particular, al
valor de la propiedad ProtectionLevel. Quizás, sea este el principal
detalle a tener en cuenta al elegir con qué método ejecutar nuestros Paquetes
DTSX, pues nos podemos encontrar que nuestros Paquetes DTSX no se ejecuten y se
produzca el siguiente error:
Error loading PackageName: Failed to decrypt
protected XML node "PackagePassword" with error 0x8009000B "Key
not valid for use in specified state."
You may not be authorized to access this
information. This error occurs when there is a cryptographic error. Verify that the correct key is available.
http://msdn.microsoft.com/es-es/library/ms162810.aspx
Apuntes y recopilaciones por Norman M. Pardell
Puedes consultarme, si deseas cualquier aclaración, pregunta o sugerencia en: Contacto, contestaré tan pronto como me sea posible.
|
 |
.Sobre mí |
Norman M. Pardell
MCITP: Database Administrator & Database Developer, SQL Server 2008. MCC Award Certificate. Consultor Senior de bases de datos en Capgemini España, S.L. Asesoramiento en implementación, desarrollo y gestión de bases de datos en grandes compañías. Actualmente, asignado a proyecto en compañía líder en el sector energético global. Más de 10 años trabajando con SQL Server (y otros gestores de BBDD)
»
Ver perfil
|
|
|