En la parte 1 de esta serie, hemos aprendido acerca de los beneficios de la utilización de un marco de administración de SQL Server Integration Services (SSIS) y qué zonas necesitan ser estandarizado para obtener estos beneficios. En este artículo, vamos a aprender cómo estandarizar una de esas áreas: administración de la configuración. Comencemos con la revisión de los objetivos de una solución válida para la administración de configuración:
- Eliminar las modificaciones manuales del paquete. Implementar la administración de configuraciones elimina la necesidad de abrir y modificar paquetes SSIS al moverlos desde desarrollo a pruebas y de pruebas a producción. Los valores de configuración (también conocidos como valores en tiempo de ejecución) son almacenados y administrados fuera de los paquetes y utilizados por éstos en tiempo de ejecución. Este diseño reduce la posibilidad de errores que pueden producirse por parte de un desarrollador o una persona de apoyo que edite un paquete y pase por alto algunos de los cambios necesarios para que el paquete se ejecute correctamente.
- Simplificar las modificaciones debidas a cambios en el entorno. Las variables de entorno incluyen rutas de archivo para archivos de origen o de destino, así como los nombres del servidor y la base de datos. Estas variables cambian según movemos nuestros paquetes de desarrollo a pruebas y de pruebas a producción. También pueden cambiar en un paquete (o conjunto de paquetes) que hayan estado en producción durante un tiempo. Al cambiar estas variables, el marco ayuda a asegurarse de que sea fácil identificar y realizar las modificaciones adecuadas para que los paquetes afectados por estos cambios, de forma que sigan funcionando normalmente.
- Simplificar la gestión de las variables. Cada paquete SSIS tiene algunas variables únicas que podrían tener que modificarse en algún momento para cambiar el comportamiento de ese paquete en particular. Cada vez que encuentre un valor codificados manualmente en el paquete, existe la posibilidad de que cambie en el futuro. Administrar dichas variables fuera del paquete cumple nuestro primer objetivo de eliminar las modificaciones manuales del paquete cuando éste se haya terminado.
- Elimine el almacenamiento redundante de configuraciones. Ciertas configuraciones, como las cadenas de conexión de base de datos se utilizan en varios paquetes para conectar con el mismo conjunto de orígenes y destinos. Tener un solo almacenamiento para configuraciones comunes que son compartidas por varios paquetes, simplifica la gestión general de los cambios.
- Eliminar errores debido a los cambios del entorno. Implementar la administración de la configuración reduce y elimina a veces errores que pueden ser causados por implementaciones no estándar de un paquete. Además, reduce el tiempo necesario para aplicar las modificaciones del entorno o del sistema y elimina la necesidad de buscar y editar cada paquete único que pueda verse afectado.
La estrategia de configuración
Para alcanzar los objetivos de una solución de administración de configuración válida, podemos implementar una estrategia de configuración en tres pasos que está diseñada para hacer independiente la máquina de paquetes SSIS. En el corazón de esta estrategia de configuración se encuentra una base de datos de configuración centralizada con varias tablas que contienen toda la información de configuración requerida por los paquetes. El objetivo es que todos los paquetes lean la información relevante de configuración de esta base de datos centralizada, independientemente del servidor en que se esté ejecutando el paquete. La información de conexión para esta base de datos centralizada se mantiene en un archivo de configuración XML, al que se hace referencia en los paquetes SSIS y se consume antes de recibir otra información de configuración. El paquete lee la información de configuración en el siguiente orden:
Paso 1. El paquete lee el archivo de configuración XML que contiene una cadena única conexión a la base de datos de configuración. Con este diseño, sólo se necesita un único cambio en el archivo de configuración XML si cambia la cadena de conexión.
Paso 2. El paquete lee una tabla de configuración que contiene todas las configuraciones comunes. Esta configuración apunta a la base de datos indicada en el archivo de configuración XML.
Paso 3. El paquete lee una tabla de configuración que contiene sus configuraciones específicas.
Implementación del marco de gestión de configuraciones
Implementar un marco de gestión de configuración consiste en configurar los siguientes componentes:
Una base de datos centralizada de configuración.La ventaja principal de utilizar una base de datos de configuración es que permite la utilización de seguridad de base de datos y seguridad basada en roles. Normalmente, una base de datos de configuración contiene una tabla de configuraciones comunes y una tabla de configuraciones específicas del paquete. Y hay posibles variaciones. Por ejemplo, una base de datos de configuración puede tener sólo una tabla de configuraciones comunes, o tener una tabla de configuraciones comunes y dos tablas de configuraciones específicas del paquete.
La tabla de configuraciones comunes contiene las configuraciones coincidentes de varios paquetes. Incluyen las cadenas de conexión y rutas de carpetas compartidas.
La tabla de las configuraciones específicas de paquete contiene configuraciones que son propias de un único paquete. Incluyen las variables del paquete, las cadenas de conexión que no son compartidas con cualquier otro paquete, las cadenas de conexión que tengan credenciales de seguridad únicas para un paquete en particular y las propiedades de objetos específicos del paquete. Las configuraciones específicas de paquete se almacenan en una tabla separada por razones de seguridad y facilidad de administración.
En la aplicación de ejemplo que vamos a debatir, la base de datos centralizada de configuración de SSIS se llamará SSISManager. Contendrá una tabla de configuraciones comunes denominada SSIS-CommonConfigurations.
Archivos XML de configuración (.dtsconfig). En estos archivos se almacena la cadena de conexión de SQL Server para la base de datos de configuración de SSISManager. En producción, la mejor práctica es tener un archivo de configuración XML en todos los servidores en que se ejecutan los paquetes SSIS. La cadena de conexión se utiliza por todos esos paquetes en ese servidor. También es posible tener un archivo de configuración XML centralizado en un recurso compartido de archivos al que puedan acceder todos los paquetes a través de una ruta de acceso de tipo UNC. En nuestro ejemplo de implementación, el archivo de configuración XML se denomina archivo SSIS_Configuration.dtsconfig.
Una variable de entorno. La variable de entorno apunta a la ubicación del archivo de configuración XML, que puede ser una ruta UNC. El nombre de la variable de entorno es codificado entonces en cada paquete SSIS. La configuración de la ubicación a través de la variable de entorno permite el traslado de los archivos de configuración XML sin ningún impacto para los paquetes. La variable de entorno debe estar presente en todos los servidores en los que se están ejecutando paquetes SSIS. La figura 1 muestra la creación de una variable de entorno denominada SSISConfiguration que apunta al archivo SSIS_Configuration.dtsconfig.
Modificación de la plantilla del paquete SSIS
- Configuración XML. Esta configuración está diseñada para leer primero la variable de entorno SSISConfiguration para obtener la ubicación y el nombre del archivo .dtsconfig y, a continuación, leer este archivo para recuperar la cadena de conexión a la base de datos SSISManager.
- Configuración común. Esta configuración se conecta a la base de datos SSISManager y lee los datos de la tabla SSISCommonConfigurations y todas las filas que tengan un valor de filtro de “Configuración común”. Esta configuración asigna todas las cadenas de conexión y otras configuraciones compartidas a variables del paquete para ser utilizadas por los objetos del paquete en tiempo de ejecución.
- Configuración de paquetes. Se trata de una configuración opcional para leer la información de configuración específica del paquete. Si se incluye, conectaría con la base de datos de configuración y leería los datos de una tabla específica del paquete.
Tenga en cuenta que esta estrategia es aplicable a SSIS 2008 R2, SSIS 2008 y SSIS 2005. En relación con la administración de la configuración, hay cambios significativos que se esperan en la próxima versión de SQL Server, de nombre clave de “Denali.” En una edición futura, publicaré un artículo que destaca cómo implementar una estrategia de administración de configuración efectiva en la versión Denali de SSIS.