Una de las tareas más prácticas en el Control Flow de SSIS es la tarea Execute
Process. Con esta tarea podemos ejecutar cualquier otra aplicación que tiene un
archivo ejecutable. La única cosa a considerar es que el archivo ejecutable debería
ser ejecutado en modo silencioso porque SSIS no está hecho para la interacción
con los usuarios. En este ejercicio, comprimiremos y descomprimiremos algunos
archivos con esta tarea con la ayuda de 7-Zip.
Alistarse
1. Completar y finalizar el ejercicio Enviar y recibir archivos a través de FTP:
Tarea FTP y utilizar los archivos de texto descargados como entrada para
este ejercicio. Estos archivos deberían estar en C:\SSIS\Control
Flow\TareaFTP\CarpetaLocal.
2. Descargue e instale 7-Zip de http://www.7-zip.org.
3. Crear un nuevo directorio vacío para
archivos extraídos aquí: C:\SSIS\Control
Flow\TareaExecuteProcess\ArchivosExtraidos.
Ejercicio
1. Crear un nuevo proyecto Integration
Services en SSDT y nombre el proyecto como TareaExecuteProcess.
2. Arrastrar y soltar una Tarea Execute
Process de la Toolbox SSIS al Control Flow.
3. Nombre la tarea Compress y haga doble clic para abrir el Execute Process Task Editor.
4. Vaya a la pestaña Process. En la propiedad Executable
seleccione el archivo 7z.exe desde
el directorio instalado; la dirección debería tener este aspecto: C:\Program Files\7-Zip\7z.exe.
5. Establecer el WorkingDirectory a la ruta de los archivos de texto que debería ser
comprimido; para nuestro ejercicio la ruta de los archivos de texto del
ejercicio de la tarea FTP: C:\SSIS\Control Flow\TareaFTP\CarpetaLocal.
6. En la propiedad Arguments escribir un modificador de línea de comandos y comandos
para 7z, de la siguiente manera:
a -t7z files.7z *.txt
7. Confirme todas sus configuraciones
con la siguiente captura de pantalla:
9. Haga doble clic en Decompress, vaya a la pestaña Process y establezca Executable a la
ruta de archivo 7z.exe: C:\Program Files\7-Zip\7z.exe.
10. Establecer el WorkingDirectory con la dirección de la carpeta a la que extraerá
sus archivos; en este ejemplo sería: C:\SSIS\Control Flow\TareaExecuteProcess\ ArchivosExtraidos.
11. Establecer Arguments con un comando unzip y cámbielo como sigue:
x "C:\SSIS\Control
Flow\TareaFTP\CarpetaLocal\files.7z"
12. Compruebe que la ficha Process en Decompress coincide con la siguiente captura de
pantalla:
Funcionamiento
Con la tarea Execute Process podemos ejecutar varios archivos ejecutables
en el flujo de control. También podemos pasar argumentos y definir un
directorio de trabajo para el archivo ejecutable.
En este ejercicio hemos utilizado dos tareas Execute Process. La
primera, Compress, archivará todos los archivos de
texto de C:\SSIS\Control
Flow\TareaFTP\CarpetaLocal en files.7z. Para este ejercicio utilizamos la
aplicación 7-Zip, que es gratuito y de código
abierto.
La propiedad Executable en la
Tarea Execute Process debería contener
la dirección del archivo ejecutable, que es la dirección del archivo 7z.exe en nuestro ejercicio. Arguments son los comandos y los
interruptores que deben ser proporcionados por las ejecuciones de línea de
comandos. En este ejercicio, primero comprimimos los archivos con el argumento
de un comando, que es un comando para guardar archivos en 7-Zip. Luego, con el comando x extraemos los
datos del archivo comprimido.
Todos los interruptores y los argumentos de línea de comandos para 7-Zip
pueden ser vistos aquí:
http://www.dotnetperls.com/7-zip-examples.
WorkingDirectory define en donde las direcciones en
la línea de comandos funcionarán; si no proporciona la dirección completa, la
dirección será buscada en el directorio de trabajo.
Podemos elegir pasar la entrada al ejecutable de una variable, y deberíamos
utilizar StandardInputVariable.
También podemos almacenar la salida de un ejecutable en una variable con
StandardOutputVariable. Si ocurre
algún error durante la ejecución del proceso, el error puede ser almacenado en
una variable con la opción StandardErrorVariable.
WindowStyle define cómo debería aparecer la ventana de
diálogo de un ejecutable; es inútil cuando las aplicaciones son ejecutadas en
el servidor.
SuccessValue definirá la interpretación del
código retornado del archivo ejecutable. Su valor por defecto es cero, y esto
significa que un ejecutable será considerado como fallido si retorna un valor
distinto de cero. Podemos cambiar este comportamiento cambiando la opción SuccessValue.
Obviamente, diferentes ejecutables retornan valores distintos
como su respuesta exitosa.
1 comentarios:
La Execute Process es una tarea muy útil, para ejecutar procesos externos. Espero les sirva.
Publicar un comentario