¿Alguna vez te has encontrado con paquetes SSIS que fallan por diversas razones, como un archivo faltante o un servidor FTP no disponible? En la mayoría de los casos, estas condiciones de error son temporales y se pueden resolver volviendo a ejecutar el paquete en otro momento. Sin embargo, es posible que no desees volver a ejecutar tareas que ya se hayan completado correctamente. ¿Existe alguna forma de reiniciar un paquete SSIS en el punto de fallo y omitir las tareas que se completaron correctamente en la ejecución anterior? La respuesta es sí, y se llama Puntos de control (Checkpoints).
SSIS proporciona una capacidad de Puntos de control que permite reiniciar un paquete en el punto de fallo. Cuando un paquete falla, la implementación de Puntos de control escribe información pertinente en un archivo XML, conocido como archivo de Puntos de control. Este archivo registra las tareas que se han completado correctamente y los valores de las variables del paquete, para que se pueda restaurar el “estado” del paquete a lo que era cuando falló. La próxima vez que se ejecute el paquete, comenzará a ejecutarse desde el principio, ya que no se encontrará ningún archivo de Puntos de control. Sin embargo, si se encuentra un archivo de Puntos de control, se utilizará para restaurar los valores de las variables del paquete y reiniciar en el punto de fallo.
Para implementar Puntos de control en un paquete, debes configurar las siguientes propiedades:
- CheckpointFileName: Especifica la ruta completa al archivo de Puntos de control que el paquete utiliza para guardar el valor de las variables del paquete y registrar las tareas completadas.
- CheckpointUsage: Determina si y cómo se utilizan los Puntos de control. Elige entre estas opciones: Nunca (predeterminado), SiExiste o Siempre. SiExiste es la configuración típica e implementa el comportamiento de reinicio en el punto de fallo.
- SaveCheckpoints: Elige Verdadero para implementar el comportamiento de Puntos de control.
Además, a nivel de tarea individual, debes configurar las siguientes propiedades:
- FailPackageOnFailure: Elige Verdadero si el paquete SSIS debe fallar si esta tarea falla. Esto implementa el comportamiento de reinicio en el punto de fallo cuando la propiedad SaveCheckpoints es Verdadero y CheckpointUsage es SiExiste.
- FailParentOnFailure: Elige Verdadero cuando la tarea está dentro de una tarea contenedora, como el contenedor de secuencia. Establece FailPackageOnFailure para la tarea en Falso y establece FailPackageOnFailure para el contenedor en Verdadero.
Es importante tener en cuenta que tanto las propiedades de Puntos de control del paquete SSIS como las propiedades de las tareas individuales deben configurarse correctamente para implementar el comportamiento de reinicio en el punto de fallo.
Ilustremos el comportamiento de reinicio en el punto de fallo con un ejemplo sencillo. Imagina un paquete SSIS con dos tareas de ejecución de SQL, donde la primera tarea tiene éxito y la segunda tarea falla. Al ejecutar el paquete, la salida mostrará que la Tarea 1 está en verde (exitosa) y la Tarea 2 está en rojo (fallida). Si ejecutamos el paquete nuevamente, notaremos que la Tarea 1 no está ni en verde ni en rojo; no se ejecutó. El paquete comienza la ejecución con la Tarea 2 porque la Tarea 1 se ejecutó correctamente en la ejecución anterior. Esto demuestra el comportamiento de reinicio en el punto de fallo.
Hay algunas advertencias a tener en cuenta al usar Puntos de control en SSIS:
- SSIS no guarda el valor de las variables de objeto en el archivo de Puntos de control.
- Si realizas cambios en los valores de configuración del paquete, el paquete no recogerá estos cambios en un reinicio después de un fallo.
- Para una tarea de flujo de datos, puedes configurar las propiedades FailPackageOnFailure o FailParentOnFailure en Verdadero. Sin embargo, no hay capacidad de reinicio para las tareas dentro del flujo de datos; solo puedes reiniciar el paquete en la tarea de flujo de datos.
En conclusión, los Puntos de control en SSIS proporcionan una forma de reiniciar un paquete SSIS en el punto de fallo y omitir las tareas que ya se han completado correctamente. Al utilizar las propiedades de Puntos de control a nivel de paquete y a nivel de tarea, puedes implementar este comportamiento y garantizar una ejecución eficiente del paquete.