Встраивание транзакций в пакеты

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

Применять транзакции в пакетах можно в следующих целях:

  • Объединение результатов нескольких задач в единую транзакцию для обеспечения согласованности обновлений. Например, данные о порядке и линейных элементах, хранимые в двух различных таблицах, могут быть переданы при выполнении двух задач, которые либо обе будут выполнены успешно, либо обе закончатся неудачей.
  • Обеспечение согласованности обновлений на нескольких серверах баз данных. Например, адрес клиента может быть изменен двумя различными системами оперативной обработки транзакций (OLTP) в контексте одной транзакции.
  • Обеспечение обновлений в асинхронной среде. Например, пакет может использовать задачу «Очередь сообщений» для чтения и удаления сообщения, имеющего имя передаваемого файла. Если задача, выполняющая передачу файла, завершается ошибкой, то последующий откат производит отмену изменений базы данных и помещает сообщение обратно в очередь.
  • Выполнение нескольких транзакций под управлением одного пакета. Например, используя задачи «Выполнение пакета», пакет может одновременно запустить завершающую рабочий день последовательность транзакций на трех различных серверах.

Все типы контейнеров служб Microsoft SQL Server 2005 Integration Services (SSIS) — пакеты, контейнеры циклов по элементам и по каждому элементу, контейнеры последовательности, а также серверы задач, которые содержат каждую задачу — могут быть настроены для использования транзакций. Службы Integration Services предоставляют три параметра для настройки транзакций: NotSupported, Supported, и Required.

  • Required указывает, что контейнер запускает транзакцию, если она не запущена родительским контейнером. Если транзакция уже существует, то контейнер к ней присоединяется. Например, если пакет, который не настроен для поддержки транзакций, содержит контейнер последовательности, использующий параметр Required, то контейнер последовательности запустит свою собственную транзакцию. Если бы пакет был настроен для использования параметра Required, то контейнер последовательности присоединился бы к транзакции пакета.
  • Supported указывает, что контейнер не запускает транзакцию, но присоединяется ко всем транзакциям, запущенным родительским контейнером. Например, если пакет, содержащий четыре задачи «Выполнение SQL», запускает транзакцию, и все четыре задачи используют параметр Supported, то обновления базы данных, выполняемые задачами «Выполнение SQL», откатываются при ошибке обновления одной из задач. Если пакет не начинает транзакцию, то четыре задачи «Выполнение SQL» не связаны транзакцией и при ошибке обновления базы данных одной из задач будет осуществляться откат обновления только той задачи, которая завершилась с ошибкой.
  • NotSupported указывает, что контейнер не начинает транзакцию и не присоединяется к существующей транзакции. Транзакция, запущенная родительским контейнером, не влияет на дочерние контейнеры, которые не были настроены на поддержку транзакций. Например, если пакет был настроен на запуск транзакции и контейнер «цикл по элементам» в пакете использует параметр NotSupported, то откат каких-либо задач в контейнере «цикл по элементам» в случае неудачи невозможен.

Настройка транзакций происходит с помощью свойства контейнера TransactionOption. Установить это свойство можно используя окно Свойства в Business Intelligence Development Studio, также можно установить это свойство программным способом. Дополнительные сведения см. в разделе Integration Services Programming.

Чтобы настроить пакет на использование транзакций

См. также

Основные понятия

Наследуемые транзакции
Множественные транзакции

Другие ресурсы

Добавление расширенных функциональных возможностей к пакетам

Справка и поддержка

Получение помощи по SQL Server 2005