Configurar tarea para comprimir fichero en proceso SSIS (SQL Server Integration Services)

Entre otras cosas, la plataforma SSIS de Microsoft (SQL Server Intregation Services) nos permite programar un flujo de tareas secuenciales o paralelas que se encarguen de la extracción y carga de datos desde diferentes orígenes, transformaciones, importación y exportación, ejecución de otras aplicaciones, etc. Muy utilizado como complemento o directamente como herramienta ETL, una tarea muchas veces recurrida en estos entornos es la de envío de correos con alertas, trazas, mensajes o informes adjuntos con los datos procesados. En esta última situación resulta muy recomendable comprimir previamente cualquier documento adjunto, tanto para agilizar el proceso de envío, como para sortear límites técnicos, como la configuración del tamaño máximo de ficheros adjuntos en el gestor de correo de SQL Server, al que normalmente no se tiene acceso en un proyecto convencional.

Para poder configurar una tarea que comprima un fichero necesitamos tener instalado previamente en nuestro servidor una herramienta de compresión: Winrar, Winzip, 7zip, etc. (sí, parece obvio, pero en entornos de producción este tipo de requerimientos suele ser complejo por unas cosas o por otras). En nuestro caso, vamos a utilizar como ejemplo la open source 7zip que podéis descargar gratuitamente. Si se va a utilizar otro programa simplemente hay que acudir a la documentación y ver los parámetros que necesita para invocarlo desde línea de comandos.

Configurar tarea para comprimir fichero en proceso SSIS (SQL Server Integration Services)

En SSIS disponemos de la «tarea» EXECUTE PROCESS TASK que nos permite ejecutar aplicaciones desde línea de comandos o ficheros batch. Tiene tres pestañas, General (donde podemos especificar nombre y descripción), Process (la más importante, donde vamos a indicar el programa o batch a lanzar y sus argumentos) y Expressions, muy útil para  modificar dinámicamente alguno de los parámetros que vamos a ejecutar por línea de comandos. Situándonos en la pestaña de Process, necesitamos configurar:

  • Executable: ruta absoluta del .exe de la herramienta de compresión (7zip, winzip, winrar, etc)
  • Arguments: parámetros para comprimir un fichero (cambian en función de la herramienta de compresión). En el caso de 7zip,  que es el que se ha usado, se pasan 4 parámetros:

7zip

Para configurar con 7zip:

a -tzip c:\Users\MiUsuario\Desktop\prueba.zip C:\Users\MiUsuario\Desktop\prueba.txt
  • a: para utilizar la función ADD, que nos permite crear un nuevo fichero comprimido
  • –tzip: formato de compresión. El parámetro es –t, seguido del formato: 7z, zip, gzip, bzip2 o tar (-t7z, -tgzip, etc).
  • Ruta destino: ubicación y nombre del fichero comprimido que vamos a generar
  • Ruta origen: fichero origen a comprimir
  • Contraseña: para añadir una contraseña simplemente añadimos la instrucción -pCONTRASEÑA. El parámetro «-p» indica que el siguiente texto concatenado es la contraseña para abrir el fichero comprimido.

Winrar

En el caso de que utilicemos Winrar la forma de invocarlo desde línea de comandos sería:

a m1 c:\Users\MiUsuario\Desktop\prueba.zip C:\Users\MiUsuario\Desktop\prueba.txt
  • a: para utilizar la función AGREGAR, que agrega los ficheros y las carpetas especificadas a un archivo
  • m1: método de compresión. Escala del 0 al 5, donde el 5 es el de mayor rendimiento y el 3 es el normal (http://www.winrar.es/soporte/manual/HELPSwM)
  • Ruta destino: ubicación y nombre del fichero comprimido que vamos a genera.
  • Ruta origen: fichero origen a comprimir
Configurar tarea para comprimir fichero en proceso SSIS (SQL Server Integration Services)

Por otro lado, comentar el parámetro  WindowStyle, para el que es recomendable ponerlo a HIDDEN con el objeto de evitar que salga algún popup para confirmar la operación y permitir la automatización completa del proceso.

Al flujo de nuestro procedimiento podremos añadirle el envío de un correo, copiar el fichero comprimido en un repositorio, etc. Cabe destacar que al disponer del 100% de funcionalidad de 7zip (o el programa de compresión utilizado), tenemos a nuestro alcance cualquier opción del programa, como asegurar el fichero con contraseña.

4 comentarios

  1. Estimados buenas noches,

    Tengo una consulta como puedo comprimir un archivo utilizando el programa 7zip y que tenga una clave para poder descomprimir, anticipo mis agadecimientos por la atención prestada.

    Saludos,
    Gracias

  2. Hola @Miriam.

    Para poner contraseña con 7zip por línea de comandos tienes que añadir el parámetro: -pCONTRASEÑA al final de la instrucción.

    a -tzip c:\Users\MiUsuario\Desktop\prueba.zip C:\Users\MiUsuario\Desktop\prueba.txt -pCONTRASEÑA

    Un saludo

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

What is 12 + 13 ?
Please leave these two fields as-is: