Garantizar la integridad de los datos mediante el uso de transacciones

Los paquetes utilizan transacciones para enlazar las acciones de base de datos que las tareas realizan en unidades atómicas y mantener de esta forma la integridad de los datos. Como todas las acciones de la base de datos que forman parte de una transacción se confirman o se revierten juntas, puede asegurarse de que los datos permanecen en un estado coherente. Por ejemplo, un paquete con varias tareas Flujo de datos, cada una de las cuáles actualiza e inserta datos en una tabla de base de datos distinta, puede usar una transacción para garantizar que todos los cambios realizados en los flujos de datos se confirmen o se reviertan. Las transacciones distribuidas llevan más lejos este concepto, al permitir el enlace de operaciones distintas en varios sistemas operativos en una sola transacción.

Puede usar transacciones en paquetes para los siguientes fines:

  • Recopilar los resultados de varias tareas en una sola transacción para asegurar la coherencia de las actualizaciones. Por ejemplo, puede utilizar dos tareas que se ejecutan o dan error juntas para cargar la información de pedidos y artículos de la línea almacenada en dos tablas distintas.

  • Garantizar la actualización coherente en varios servidores de base de datos. Por ejemplo, puede cambiar una dirección de cliente en dos sistemas diferentes de procesamiento de transacciones en línea (OLTP) en el contexto de una transacción.

  • Garantizar las actualizaciones en un entorno asincrónico. Por ejemplo, un paquete podría utilizar una tarea Cola de mensajes para leer y eliminar un mensaje que contenga el nombre de un archivo que se desea cargar. Si se produce un error en la tarea que carga el archivo, al revertir se invierten los cambios realizados en la base de datos y se vuelve a colocar el mensaje en la cola.

  • Realizar múltiples transacciones bajo el control de un solo paquete. Por ejemplo, con tareas Ejecutar paquete, un paquete puede ejecutar simultáneamente una secuencia de transacciones de final del día en tres servidores distintos.

Todos los tipos de contenedor de Microsoft Integration Services: contenedores de paquetes, de bucles For y Foreach o de secuencias y hosts de las tareas que encapsulan cada tarea, se pueden configurar para que utilicen transacciones. Integration Services proporciona tres opciones para configurar transacciones: NotSupported, Supported y Required.

  • Required indica que el contenedor inicia una transacción, a menos que el contenedor principal ya haya iniciado otra. Si ya existe una transacción, el contenedor la combina. Por ejemplo, si un paquete que no está configurado para admitir transacciones, incluye un contenedor de secuencias que utiliza la opción Required, el contenedor de secuencias iniciará su propia transacción. Si el paquete se hubiera configurado para utilizar la opción Required, el contenedor de secuencias combinaría la transacción del paquete.

  • Supported indica que el contenedor no inicia una transacción, pero sí combina cualquier transacción iniciada por el contenedor principal. Por ejemplo, si un paquete con cuatro tareas Ejecutar SQL inicia una transacción y las cuatro tareas utilizan la opción Supported, las actualizaciones de la base de datos realizadas por las tareas Ejecutar SQL se revierten si se produce un error en cualquiera de las tareas. Si el paquete no inicia una transacción, las cuatro tareas Ejecutar SQL no estarán enlazadas por una transacción y no se revertirá ninguna actualización de base de datos, excepto las realizadas por la tarea que tuvo el error.

  • NotSupported indica que el contenedor no inicia una transacción ni combina una transacción existente. Una transacción iniciada por un contenedor principal no afecta a los contenedores secundarios configurados de manera que no admitan transacciones. Por ejemplo, si un paquete está configurado para iniciar una transacción y un contenedor de bucles For del paquete utiliza la opción NotSupported, no se revertirá ninguna de las tareas del contenedor de bucles For aunque genere un error.

Para configurar transacciones, hay que establecer la propiedad TransactionOption en el contenedor. Puede establecer esta propiedad en la ventana Propiedades de Business Intelligence Development Studio o mediante programación. Para obtener más información, vea Guía del desarrollador (Integration Services).

Nota

La propiedad TransactionOption tiene influencia sobre el hecho de que el valor de la propiedad IsolationLevel solicitada por un contenedor se aplique o no. Para obtener más información, vea la descripción de la propiedad IsolationLevel en el tema Establecer las propiedades de paquete.

Para configurar un paquete para que utilice transacciones

Recursos externos

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

Para obtener las descargas, artículos, ejemplos y vídeos más recientes 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.