Uno de los aspectos más molestos de SSIS, es el hecho de que no permita utilizar rutas relativas en las cadenas de conexión a archivos. Esto es un problema si queremos realizar un ETL que se vaya a desplegar en una ruta distinta a la utilizada en tiempo de diseño… pero por fortuna, aunque un poco rebuscado, hay un truco que permite utilizar paths relativos.
Atended pues, a esta receta con la que podréis desarrollar un ETL rico, rico, rico… que os permita:
- Utilizar archivos como orígenes de datos sin tener que colocarlos en rutas fijas
- Lanzar archivos "dtsx" que se almacenen en el directorio en el que se está ejecutando el ETL
- … etc, etc, etc…
Vamos pues, paso a paso con el truquillo:
- Lo primero que hay que hacer es definir una variable con el path en el que se desplegará el ETL. Definidla de forma que sea global al archivo "dtsx" principal en el que se haya implementado el ETL. Ya sabéis, se va a la pestañita de "Control Flow" y se define la varible desde allí.
- Cuando creamos una conexión a un archivo, Integration Services nos obliga a establecer como cadena de conexión, la ruta absoluta a un archivo existente. Pues bien, satisfaremos los deseos de SSIS haciendo que la conexión apunte a un archivo existente.
- Seleccionamos “Propiedades” de la conexión sobre la que queremos establecer la ruta relativa.
- Seleccionar “Expresiones” (pinchamos en los tres puntitos al lado de "expressions" en la ventana de propiedades).
- Seleccionar “ConnectionString”
- Establecer una expresión que construya un path absoluto en función de la variable con el path de despliegue: en mi ejemplo, @[User::DeploymentPath] + "\Data\DayOfWeekNameValues.txt". Esta expresión, se resolverá en tiempo de ejecución y sobreescribirá el valor de la propiedad que hubiésemos establecido en tiempo de diseño.
- Por último, deberemos propagar el valor de la variable a paquetes hijos, por medio de la opción "SSIS-> Package Configurations". De todas la opciones disponibles, seleccionaremos la opción de tomar una configuración de una variable desde el paquete padre.
- La variable que marca la ruta al paquete, también puede configurarse desde "SSIS-> Package Configurations". La opción más adecuada en este caso, es tomar su valor de una entrada de registro, o de una variable de entorno (consultad los libros en pantalla, que las entradas de registro tienen que tener un formato específico).
Bueno, espero que os haya gustado mi primer post tras la vuelta de vacaciones. Os deseo un buen comienzo de curso, y ya sabéis… ¡felices transformaciones!