SSIS - Crear conexión ftp por script
El componente “FTP Task” a veces se queda corto cuando queremos hacer cosas, por lo que se hace necesario realizar el ftp a través de “Script Task”. A continuación explico una tarea sencilla: colocar dos archivos en el servidor ftp; de ahí en adelante pueden modificar el código según lo que les dicte su imaginación…
Connection manager
En el paquete ssis debes crear un connection manager al servidor ftp, llamado DESTINO_SERVER_FTP,. Click derecho sobre el panel de Connection Managers y eliges New Connetion, aparecerá una ventana solicitando el tipo de conexión, debes seleccionar FTP.
La configuración de la conexion sería algo así:
Ahora, crea un Script Task y copia este codigo
Código del Script task
Imports System
Imports System.Data
Imports System.Math
Imports Microsoft.SqlServer.Dts.Runtime
Imports Microsoft.VisualBasic.FileIO.FileSystem
Imports System.IO.FileSystemInfo
Imports System.IO
Imports System.Net
Public Class ScriptMain
Public Sub Main()
Try
Dim fileNames(2) As String ' Array de tamaño 2 pues son dos archivos
Dim dirRemoto As String
'' PASO 1:: Directorio donde quedaran los archivos en el servidor
dirRemoto = "/pruebas/"
'' PASO 2 :: Defino el connectionManager del FTP
Dim cm As ConnectionManager = Dts.Connections("DESTINO_SERVER_FTP")
cm.Properties("ServerName").SetValue(cm, "localhost”)
cm.Properties("ServerUserName").SetValue(cm, "usuario_pruebas”)
cm.Properties("ServerPassword").SetValue(cm, "123Cl4u”)
cm.Properties("ServerPort").SetValue(cm, "21")
cm.Properties("Timeout").SetValue(cm, "0")
cm.Properties("ChunkSize").SetValue(cm, "1000") '1000 kb
'' PASO 3 :: Creo el objeto FTP
Dim ftp As FtpClientConnection = New FtpClientConnection(cm.AcquireConnection(Nothing))
' PASO 4 :: Nombres de los archivos
fileNames(0) = "saldos_1.txt"
fileNames(1) = "saldos_2.txt"
'' PASO 5. Abro la conexion al ftp y traigo los archivos al directorio local
ftp://ftp.usepassivemode/ = True ' en modo pasivo
ftp://ftp.sendfiles(filenames/, dirRemoto, True, False) ' en modo sobreescribir
Catch ex As Exception
MsgBox("Error :: " + ex.ToString)
Dts.TaskResult = Dts.Results.Failure
End Try
End Sub
End Class
Etiquetas: ssis
3 comentarios:
Muy interesante
Solo le veo un "pero": la necesidad de incluir las credenciales del sitio ftp, con los problemas de seguridad que implica. ¿Alguna sugerencia? ¿encriptación del valor, o recuperación de dichos valores desde la base de datos?
Salu2,
De Unknown, A las 11 de noviembre de 2009, 1:44
Para la seguridad puedes crear variables en el paquete
por ejemplo "V_nombreUsuario" de tipo String y le ingresas cualquier valor (uno ficticio)..
Para que tome el valor verdadero puedes ya sea hacer una consulta a la BD (donde si quieres este encriptado) o puedes usar llaves del registro de windows, en el menu superior donde dice SSIS -> Package Configurations...
Voy a crear una entrada en el blog para explicar el paso a paso de eso.
De sobenavi, A las 6 de enero de 2010, 9:15
Esa es la url del paso a paso
http://sobenavi.blogspot.com/2009/03/ssis-package-configurations.html
De sobenavi, A las 12 de enero de 2010, 16:01
Publicar un comentario
<< Inicio