Встраивание транзакций в пакеты
Пакеты используют транзакции для связывания выполняемых в базе данных задачами операций в атомарные объекты, и, таким образом, сохраняют целостность данных. Поскольку все операции базы данных, являющиеся частью транзакции, фиксируются или откатываются вместе, можно сделать так, чтобы данные всегда оставались в согласованном состоянии. Например, пакет, содержащий несколько задач потока данных, каждая из которых осуществляет обновление и вставку данных в свою таблицу базы данных, может использовать транзакцию, чтобы фиксировались или откатывались все изменения, выполненные в потоке данных. Распределенные транзакции реализуют эту концепцию еще дальше, позволяя объединять разрозненные операции на платформах с разными операционными системами в единую транзакцию.
Транзакции в пакетах можно использовать в следующих целях.
Объединение результатов нескольких задач в единую транзакцию для обеспечения согласованности обновлений. Например, данные о заказах и их товарных позициях, хранимые в двух разных таблицах, могут загружаться двумя задачами, которые вместе заканчиваются успехом или неудачей.
Обеспечение согласованности обновлений на нескольких серверах баз данных. Например, адрес клиента может быть изменен двумя различными системами оперативной обработки транзакций (OLTP) в контексте одной транзакции.
Обеспечение обновлений в асинхронной среде. Например, пакет может использовать задачу «Очередь сообщений» для чтения и удаления сообщения, имеющего имя передаваемого файла. Если задача, выполняющая передачу файла, заканчивается ошибкой, то последующий откат отменяет изменения базы данных и возвращает сообщение в очередь.
Выполнение нескольких транзакций под управлением одного пакета. Например, с помощью задач «Выполнение пакета» пакет может одновременно запустить последовательность транзакций, которая выполняется в конце рабочего дня, на трех разных серверах.
Все типы контейнеров служб MicrosoftIntegration Services — пакеты, контейнеры циклов по элементам и по каждому элементу, контейнеры последовательности, а также серверы задач, которые содержат каждую задачу — могут быть настроены для использования транзакций. Службы Integration Services предоставляют три параметра для настройки транзакций: NotSupported, Supported, и Required.
Required указывает, что контейнер запускает транзакцию, если она еще не запущена родительским контейнером. Если транзакция уже существует, контейнер к ней присоединяется. Например, если пакет, не настроенный для поддержки транзакций, содержит контейнер последовательности, использующий параметр Required, то контейнер последовательности начнет свою собственную транзакцию. Если бы пакет был настроен для использования параметра Required, контейнер последовательности присоединился бы к транзакции пакета.
Supported указывает, что контейнер не запускает транзакцию, но присоединяется к любой транзакции, запущенной родительским контейнером. Например, если пакет с четырьмя задачами «Выполнение SQL» запускает транзакцию и все четыре задачи используют параметр Supported, то обновления базы данных, выполненные задачами «Выполнение SQL», откатываются при ошибке обновления любой из этих задач. Если пакет не начинает транзакцию, четыре задачи «Выполнение SQL» не связаны транзакцией и в случае ошибки обновления базы данных одной из задач отменяются только обновления этой задачи.
NotSupported указывает, что контейнер не начинает транзакцию и не присоединяется к существующей транзакции. Транзакция, запущенная родительским контейнером, не влияет на дочерние контейнеры, которые не были настроены на поддержку транзакций. Например, если пакет был настроен на запуск транзакции, а контейнер «цикл по элементам» в пакете использует параметр NotSupported, то в случае неудачи откат каких-либо задач в контейнере «цикл по элементам» невозможен.
Настройка транзакций происходит с помощью свойства контейнера TransactionOption. Установить это свойство можно в окне Свойства в Business Intelligence Development Studio или программным путем. Дополнительные сведения см. в разделе Руководство разработчика (службы Integration Services).
Примечание |
---|
Cвойствo TransactionOption влияет на то, применяется ли значение свойства IsolationLevel, запрашиваемого контейнером. Дополнительные сведения см. в описании свойства IsolationLevel в разделе Установка свойств пакета. |
Настройка пакета на использование транзакций
Внешние ресурсы
- Запись в блоге, Как использовать транзакции в службах SQL Server Integration Services SSIS, на сайте www.mssqltips.com
|
См. также