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:
Publicar un comentario