lunes, 20 de febrero de 2012

Formas de ejecutar un paquete SSIS

Hoy toca hablar de como ejecutar paquetes SSIS ya sea desde una dirección en un directorio local o desde el servidor de Bases de Datos.

El código que presentaré estará escrito en VB.Net o en Transac SQL

Desde código VB.Net

Lo primero que deben tener en cuenta es que deben referenciar la clase Microsoft.SQLServer.ManagedDTS para poder hacer uso de las opciones para llamar un paquete SSIS ya sea desde un directorio o desde el Servidor de SQL.

1. Llamar un paquete SSIS que se encuentra en un Servidor SQL

Importamos los siguientes espacios de nombre

Imports System.Data.SqlClient
Imports Microsoft.SqlServer.Dts.Runtime

Luego picamos el siguiente código

Dim oApp As New Application

'Si no están usando usuario o clave pueden pasar estos parametros en Nothing
Dim oPack As Package = oApp.LoadFromSqlServer("Nombre SSIS", "Nombre Server ", "Usuario", "Clave", Nothing)

'En el caso que deban pasar variables deben considerar tomar el esquema de
'configuración del paquete SSIS, antes de realizar la llamada, como se muestra a continuación
oPack.ImportConfigurationFile("C:\...\NombreSSIS.dtsConfig")
Dim var As Variables =
oPack.Variables
var("Variable 1").Value = "Valor"
var("Variable n").Value = "Valor n"


' Si el SSIS procesa mucha información, la aplicacion espera una respuesta
Dim dtsRes As DTSExecResult = oPack.Execute()

' En el caso que deseen controlar los errores
If dtsRes = DTSExecResult.Success Or dtsResult = DTSExecResult.Completion Then
' Mensaje de éxito o retornar true
ElseIf dtsRes = DTSExecResult.Failure Then
' Mensaje de error o retornar false
ElseIf dtsRes = DTSExecResult.Canceled Then
' Mensaje correspondiente o retonar false
End If

2. Llamar un paquete SSIS que se encuentra en una carpeta

El proceso es muy similar, no se olviden de importar los espacios de nombre ya antes mensionados.
Para realizar la llamada deben utilizar el siguiente código

Dim oApp As New Application

'Si no están usando usuario o clave pueden pasar estos parametros en Nothing
Dim oPack As Package = oApp.LoadPackage("C:\...\NombreSSIS.dtsx")

' En el caso que deban pasar variables, Idem al ejemplo anterior
' deben considerar tomar el esquema de
configuración del paquete
' SSIS, antes de realizar la llamada, como se muestra a continuación


' Si el SSIS procesa mucha información, la aplicacion espera una respuesta
Dim dtsRes As DTSExecResult = oPack.Execute()


' si desean controlar el mesaje de error, Idem al ejemplo anterior

3. Realizar una llamada en SQL utilizando el Procedimiento Almacenado "SP_START_JOB"

Bueno, este ejemplo lo pueden encontrar en distintas partes, ya que es muy común, aunque el problema es que no pueden controlar si el paquete ha terminado satisfactoriamente o ha lanzado un error, aquí no voy a entrar en detalle solo les dejaré la URL de donde esta explicado en Microsoft

http://msdn.microsoft.com/es-es/library/ms403355.aspx

De la misma forma, pueden crearse un procedimiento almacenado en SQL server que llama SP_START_JOB y que se puede ejecutar en el servidor de SQL. Para esto solo deben realizar la simple llamada en transac SQL EXEC.
Aquí les cuelgo la URL para hacer esto:

http://msdn.microsoft.com/es-es/library/ms186757.aspx

4. Utilizando
"xp_cmdshell", bueno esta forma ejecuta un SSIS que se encuentra en una carpeta o en el servidor de SQL, en el servidor donde se ejecuta SQL Server.

Para ello lo que deben hacer es lo siguiente.
Por defecto desde la versión de SQL Server 2005 xp_cmdshell viene inhabilitado por defecto, por lo cual deben habilitarlo. Lo pueden habilitar usando transac SQL de la siguiente forma:

exec sp_configure 'show advanced options', 1
go

reconfigure
go

exec sp_configure 'xp_cmdshell', 1
go

reconfigure
go


Otra forma de hacerlo es utilizando el administrador de características de SQL Server

Ya tenemos configurado en el servidor SQL xp_cmdshell, ahora para ejecutar el paquete vean el siguiente link.

http://msdn.microsoft.com/es-es/library/ms162810%28v=sql.90%29.aspx

En este link se explica como y cuales cosas deben hacer o seguir para ejecutar un paquete SSIS mediante xp_cmdshell.


Bueno amigos espero haberles ayudado. Además esto me sirve como recordatorio para otras ocaciones.

No hay comentarios: