Поделиться через


Множественные транзакции

В одном пакете Integration Services может содержаться несколько самостоятельных транзакций. Каждый раз, когда контейнер в середине иерархии вложенных контейнеров не поддерживает транзакции, контейнеры выше и ниже по иерархии начинают отдельные транзакции, если настроены для поддержки транзакций. Транзакции фиксируются или откатываются, начиная с самой глубокой задачи в иерархии вложенных контейнеров пакета. Однако после фиксации вложенной транзакции она не откатывается, если внешняя транзакция прервана.

Например, пакет включает контейнер последовательности, содержащий два контейнера «цикл по каждому элементу», и каждый контейнер включает две задачи «Выполнение SQL». Контейнеры «цикл по каждому элементу» не поддерживают транзакции, а контейнер последовательности и задача «Выполнение SQL» поддерживают. В этом примере каждая задача «Выполнение SQL» запустит свою собственную транзакцию и не будет откатываться, если транзакция задачи последовательности будет прервана.

Свойства TransactionOption контейнера последовательности, контейнера «цикл по каждому элементу» и задач «Выполнение SQL» установлены следующим образом:

  • Свойство TransactionOption контейнера последовательности установлено в значение Required.

  • Свойства TransactionOption контейнеров «цикл по каждому элементу» установлены в значения NotSupported.

  • Свойства TransactionOption задач «Выполнение SQL» установлены в значения Required.

На следующей диаграмме показаны пять несвязанных транзакций в пакете. Одна транзакция была начата контейнером последовательности, а четыре других — задачами «Выполнение SQL».

Реализация множественных транзакций