Usar puntos de comprobación en paquetes

Integration Services puede reiniciar los paquetes con errores desde el punto del error, en lugar de volver a ejecutar todo el paquete. Si se configura un paquete para que utilice puntos de comprobación, la información relacionada con la ejecución del paquete se escribirá en un archivo de punto de comprobación. Cuando se vuelve a ejecutar el paquete con error, se utiliza el archivo de punto de comprobación para reiniciar el paquete desde el punto del error. Si el paquete se ejecuta correctamente, el archivo de punto de comprobación se elimina y se vuelve a crear la siguiente vez que se ejecuta el paquete.

El uso de puntos de comprobación en un paquete puede proporcionar las siguientes ventajas.

  • Evita que se repita la descarga y la carga de archivos grandes. Por ejemplo, un paquete que descarga varios archivos grandes mediante una tarea de FTP para cada descarga, se puede reiniciar cuando la descarga de un solo archivo genera un error y, a continuación, descargar únicamente ese archivo.

  • Evita repetir la carga de grandes cantidades de datos. Por ejemplo, un paquete que realiza inserciones masivas en tablas de dimensiones de un almacenamiento de datos, utilizando una tarea Inserción masiva para cada dimensión, se puede reiniciar si la inserción genera un error para una tabla de dimensión y, en ese caso, solo se volverá a cargar esa dimensión.

  • Evita repetir la agregación de valores. Por ejemplo, un paquete que calcula muchos agregados, como promedios y sumas, utilizando una tarea Flujo de datos para realizar cada agregación, se puede reiniciar cuando el cálculo de una agregación genera un error, y solo se vuelve a calcular esa agregación.

Si un paquete está configurado para utilizar puntos de comprobación, Integration Services captura el punto de reinicio del archivo de punto de comprobación. El tipo de contenedor que genera el error y la implementación de características como las transacciones afectan al punto de reinicio que se registra en el archivo de punto de comprobación. Los valores actuales de variables se capturan también en el archivo de punto de comprobación. Sin embargo, los valores de variables que tienen el tipo de datos Object no se guardan en los archivos de puntos de comprobación.

Si se reinicia el paquete, Integration Services no vuelve a cargar las configuraciones del paquete. En su lugar, el paquete utiliza la información de configuración que se escribió en el archivo de puntos de comprobación. Esto asegura que, cuando el paquete se vuelva a ejecutar, utilizará la misma configuración que cuando se generó el error.

Definir puntos de reinicio

Los componentes de Integration Services siguientes son las unidades atómicas de trabajo que puede reiniciar utilizando puntos de comprobación:

  • Tarea   El contenedor host de la tarea, que encapsula una sola tarea, es la unidad atómica de trabajo más pequeña que se puede reiniciar.

    [!NOTA]

    Dado que la tarea Flujo de datos, que incluye todo su contenido, es una unidad atómica de trabajo, no puede reiniciar un paquete en el medio del flujo de datos. Para evitar volver a ejecutar el flujo de datos entero, podría diseñar el paquete para que incluya varias tareas Flujo de datos. De esta manera, cuando el paquete se reinicie, solo se volverán a ejecutar las tareas Flujo de datos en las que se produjo un error.

  • Contenedor de transacción   Un contenedor de transacción también es una unidad atómica de trabajo que se puede reiniciar. Si se detiene un paquete mientras se está ejecutando un contenedor de transacción, la transacción finaliza y se revierte todo el trabajo que haya realizado. Sin embargo, el archivo de punto de comprobación no contiene información sobre el trabajo completado por los contenedores secundarios y el contenedor de transacción y sus contenedores secundarios se ejecutan de nuevo cuando el paquete se reinicia.

    Para aminorar los posibles conflictos entre los puntos de comprobación y las transacciones, Integration Services no guarda información del punto de comprobación sobre lo que ocurre dentro de un contenedor cuando se cumple alguna de las condiciones siguientes:

    • El valor de la propiedad TransactionOption del contenedor es Required.

      O bien

    • El valor de la propiedad TransactionOption del contenedor es Supported, pero el contenedor primario posee una transacción o está inscrito en una transacción.

    [!NOTA]

    Utilizar puntos de comprobación y transacciones en el mismo paquete podría producir resultados inesperados. Por ejemplo, cuando un paquete genera un error y se reinicia desde un punto de comprobación, podría repetir una transacción que ya se ha confirmado correctamente.

  • Contenedor de bucles Foreach   El contenedor de bucles Foreach es otra unidad atómica de trabajo que se puede reiniciar. Sin embargo, el archivo de punto de comprobación no contiene información sobre el trabajo completado por los contenedores secundarios y el contenedor de bucles Foreach y sus contenedores secundarios se ejecutan de nuevo cuando el paquete se reinicia.

Configurar un paquete para que se reinicie

El archivo de punto de comprobación incluye los resultados de ejecución de todas las unidades de trabajo completadas (según se ha descrito antes en este tema), los valores actuales de las variables del sistema y las definidas por el usuario, y la información de configuración de paquetes. El archivo también incluye el identificador único del paquete. Para reiniciar correctamente un paquete, el identificador del paquete en el archivo de punto de comprobación y el paquete deben coincidir; de lo contrario, no se podrá reiniciar. Esto evita que un paquete utilice un archivo de punto de comprobación escrito por una versión distinta del paquete. Si el paquete se ejecuta correctamente, el archivo de punto de comprobación se elimina después de reiniciar el paquete.

En la tabla siguiente se muestran las propiedades del paquete establecidas para implementar puntos de comprobación.

Propiedad

Descripción

CheckpointFileName

Especifica el nombre del archivo de punto de comprobación.

CheckpointUsage

Especifica si se utilizarán puntos de comprobación.

SaveCheckpoints

Indica si el paquete guarda puntos de comprobación. Esta propiedad debe estar establecida en True para poder reiniciar un paquete desde el punto del error.

Además, debe establecer la propiedad FailPackageOnFailure en true para todos los contenedores del paquete que desea identificar como puntos de reinicio.

Puede utilizar la propiedad ForceExecutionResult para probar el uso de los puntos de comprobación de un paquete. Si establece ForceExecutionResult de una tarea o un contenedor en Error, puede simular un error en tiempo real. Al volver a ejecutar el paquete, se volverá a ejecutar los contenedores o la tarea que generaron el error.

Establecer la propiedad CheckpointUsage

En la tabla siguiente, se muestran los valores de la propiedad CheckpointUsage.

Valor

Descripción

Never

Especifica que no se utilizará el archivo de punto de comprobación y que el paquete se ejecutará desde el inicio del flujo de trabajo del paquete.

Always

Especifica que el archivo de punto de comprobación se utilizará siempre y que el paquete se reinicia desde el punto del error de ejecución anterior. Si no se encuentra el archivo de punto de comprobación, el paquete generará un error.

IfExists

Especifica que se utilizará el archivo de punto de comprobación, si existe. Si existe un archivo de punto de comprobación, el paquete se reiniciará desde el punto del error de ejecución anterior; de lo contrario, se ejecutará desde el inicio del flujo de trabajo del paquete.

[!NOTA]

La opción /CheckPointing on de dtexec es equivalente a establecer la propiedad SaveCheckpoints del paquete en True, y la propiedad CheckpointUsage en Always. Para obtener más información, vea dtexec (utilidad).

Elegir una ubicación para los archivos de puntos de comprobación

En un clúster de conmutación por error donde tiene instalado Integration Services en varios nodos del clúster, puede guardar los archivos de puntos de comprobación en una ubicación compartida. A continuación, si se produce una conmutación por error, puede reiniciar un paquete que se interrumpiera a partir del último punto de comprobación en un nodo diferente del clúster.

Proteger archivos de puntos de comprobación

El nivel de protección de paquetes no incluye la protección de archivos de puntos de comprobación; estos archivos se deben proteger por separado. Solo puede almacenar datos de puntos de comprobación en el sistema de archivos y debe utilizar una lista de control de acceso (ACL) al sistema operativo para ayudar a proteger la ubicación o carpeta en la que ha almacenado el archivo. Es importante proteger los archivos de puntos de comprobación, dado que contienen información sobre el estado del paquete, como son los valores actuales de las variables. Por ejemplo, una variable podría contener un conjunto de registros con varias filas de datos privados, como números de teléfono. Para obtener más información, vea Controlar el acceso a los archivos usados por los paquetes.

Para configurar las propiedades del punto de comprobación

Icono de Integration Services (pequeño) Manténgase al día con Integration Services

Para obtener las más recientes descargas, artículos, ejemplos y vídeos de Microsoft, así como soluciones seleccionadas de la comunidad, visite la página de Integration Services en MSDN o TechNet:

Para recibir notificaciones automáticas de estas actualizaciones, suscríbase a las fuentes RSS disponibles en la página.

Historial de cambios

Contenido actualizado

  • Se ha aclarado qué componentes son unidades de trabajo en la sección "Definir puntos de reinicio".

  • Se ha agregado la sección "Elegir una ubicación para los archivos de puntos de comprobación".