SQL SERVER : EJECUTAR UN PAQUETE SSIS
Existe 4 formas diferentes de ejecutar un paquete SSIS, las cuales van desde crear una aplicación en .NET hasta ejecutar procedimientos almacenados. A continuación veremos cuales son:
Programando en .NET: Utilizando el espacio de nombresMicrosoft.SqlServer.ManagedDTS, se puede programar una aplicación que ejecute un paquete de SSIS. El problema, para nosotros es que solamente se puede ejecutar paquetes de forma local, o sea, que estén en el mismo servidor donde se encuentre aplicación. Ejemplo: pueden ver un ejemplo aquí:http://msdn.microsoft.com/en-us/library/ms403355.aspx.
Usar la utilidad DTExec.exe: Este es un programa que a través de línea de comando es posible ejecutar un paquete SSIS, pueden ver los distintos parámetros aquí: http://msdn.microsoft.com/en-us/library/ms162810.aspx. Igual que la forma anterior solamente se puede ejecutar de manera local.
Usar SQL Agent: Usando el procedimiento almacenado “sp_start_job”, se puede ejecutar un job el cual puede ejecutar un paquete SSIS. Por lo tanto se debe crear un job y luego llamarlo a través de T-SQL a través del procedimiento almacenado “sp_start_job”. Esta forma permite la ejecución remota, pero se debe instalar el agente de SQL Server, además el procedimiento “sp_start_job” solamente retorna si fue exitosa la ejecución del job, no si fue exitosa la ejecución del paquete SSIS.
Usando xp_cmdshell: El procedimiento almacenado xp_cmdshell permite la ejecución de comandos de windows en SQL Server. Así se puede ejecutar la utilidad DTExec.exe, del punto dos, a través de este procedimiento almacenado. Hay que tener precaución, ya que la llamada de xp_cmdshell se ejecuta con los mismos privilegios de la cuenta de SQL Server, por lo que puede haber problemas de seguridad.
Usando xp_cmdshell
Este comando, por seguridad, desde la versión de SQL Server 2005 viene desactivado por defecto. Para poder activarlo se debe ejecutar el siguiente código:
EXEC sp_configure 'show advanced options', 1
GO
-- To update the currently configured value for advanced options.
RECONFIGURE
GO
-- To enable the feature.
EXEC sp_configure 'xp_cmdshell', 1
GO
-- To update the currently configured value for this feature.
RECONFIGURE
GO
Luego que tengamos habilitado este procedimiento almacenado, podemos ejecutar la utilidad “DTExec.exe”, aquí les muestro un código de ejemplo:
-- Variable donde almacenaremos la linea a ejecutar
declare @lineExecute varchar(8000)
-- Variable donde almacenaremos el nombre del Paquete
declare @packageName varchar(100)
-- Nombre del Servidor SSIS
declare @serverName varchar(100)
-- Parametros
declare @params varchar(8000)
<pre>
set @packagename = '"\File System\PackageName"'
set @servername = 'ServerName'
set @params = ''
set @lineExecute = 'dtexec /dts ' + @packageName + ' /ser ' + @serverName + ' '
set @lineExecute = @lineExecute + @params
--Ejecutando el comando
DECLARE @returnCode int
EXEC @returnCode = xp_cmdshell @ssisstr
-- Mostrando el resultado de la ejecución
select @returnCode
Referencia :
http://www.alejandrolabra.com/2010/11/ejecutar-un-paquete-ssis-via-programacion/
Comentarios
Publicar un comentario