Использование контрольных точек в пакетах

Службы Integration Services могут перезапустить пакеты, при выполнении которых произошел сбой, начиная с момента этого сбоя вместо перезапуска всего пакета. Если настройка пакета предполагает использование контрольных точек, сведения о выполнении пакета записываются в файл контрольных точек. Файл контрольных точек используется при перезапуске давшего сбой пакета для осуществления повторного запуска пакета с момента сбоя. В случае успешного выполнения пакета файл контрольных точек удаляется, а затем при следующем выполнении пакета создается повторно.

Использование контрольных точек в пакете обеспечивает следующие преимущества.

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

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

  • Предотвращение повторного выполнения статистической обработки значений. Например, пакет выполняет вычисление нескольких статистических выражений, таких как среднее и суммарное значения, при помощи задачи потока данных для выполнения каждого статистического выражения. Пакет можно перезапустить после сбоя, возникшего при вычислении отдельного выражения, и заново выполнить вычисление только этого выражения.

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

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

Определение точек перезапуска

Следующие компоненты служб Integration Services являются неделимыми единицами работы, которые можно перезапускать с помощью контрольных точек.

  • Задача. Контейнер сервера задач, в котором заключена единственная задача, является наименьшей неделимой единицей работы, которая может быть перезапущена.

    ПримечаниеПримечание

    Поскольку задача потока данных со всем содержимым является неделимой единицей работы, нельзя перезапустить пакет в середине потока данных. Чтобы избежать повторного запуска всего потока данных, в пакет можно включить несколько задач потока данных. Таким образом, при перезапуске пакета повторно будут выполняться только задачи потока данных, в которых произошли ошибки.

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

    Чтобы сократить число возможных конфликтов между контрольными точками и транзакциями, службы Integration Services не сохраняют данные контрольных точек о событиях, происходящих внутри контейнера, если выполняется одно из следующих условий.

    • Свойство TransactionOption контейнера имеет значение Required.

      — или —

    • Свойство TransactionOption контейнера имеет значение Supported, но родительский контейнер владеет транзакцией или зарегистрирован в транзакции.

    ПримечаниеПримечание

    Использование контрольных точек и транзакций в одном и том же пакете может привести к непредвиденным результатам. Так, если выполнение пакета завершается аварийно и возобновляется с контрольной точки, этот пакет может повторить транзакцию, которая уже была успешно зафиксирована.

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

Настройка пакета для перезапуска

Файл контрольных точек содержит результаты выполнения всех завершенных единиц работы (описанных ранее в этом разделе), текущие значения системных и пользовательских переменных, а также сведения о конфигурации пакета. Кроме того, файл содержит уникальный идентификатор пакета. Для успешного перезапуска пакета идентификатор пакета в файле контрольных точек должен совпадать с идентификатором в пакете, в противном случае перезапуск завершится сбоем. Это предотвращает использование пакетом файла контрольных точек, записанного пакетом другой версии. Если пакет выполнен успешно, после его перезапуска файл контрольных точек удаляется.

В следующей таблице представлены свойства пакета, которые устанавливаются для использования контрольных точек.

Свойство

Описание

CheckpointFileName

Определяет имя файла контрольных точек.

CheckpointUsage

Определяет, используются ли контрольные точки.

SaveCheckpoints

Показывает, сохраняет ли пакет контрольные точки. Для перезапуска пакета с момента сбоя это свойство должно иметь значение True.

Также необходимо установить значение true для свойства FailPackageOnFailure всех контейнеров пакета, которые нужно обозначить как точки перезапуска.

Для проверки использования контрольных точек в пакете можно использовать свойство ForceExecutionResult. Установив для свойства ForceExecutionResult задачи или контейнера значение Failure, можно имитировать сбой в реальном времени. При перезапуске пакета вызвавшие сбой задача и контейнеры будут перезапущены.

Установка свойства CheckpointUsage

В следующей таблице приводятся значения свойства CheckpointUsage.

Значение

Описание

Never

Указывает, что файл контрольных точек не используется и пакет выполняется с начала потока операций пакета.

Always

Указывает, что файл контрольных точек используется всегда и пакет перезапускается с момента предыдущего сбоя в выполнении. Если файл контрольных точек не обнаружен, при выполнении пакета происходит сбой.

IfExists

Указывает, что файл контрольных точек должен использоваться, если он существует. Если файл контрольных точек существует, пакет перезапускается с момента последнего сбоя в выполнении; иначе пакет выполняется с начала потока операций пакета.

ПримечаниеПримечание

Параметр /CheckPointing on команды dtexec эквивалентен присвоению значения True свойству пакета SaveCheckpoints и значения Always свойству CheckpointUsage. Дополнительные сведения см. в разделе Программа dtexec.

Выбор места для файлов контрольных точек

В отказоустойчивом кластере, где на нескольких узлах установлены службы Integration Services, можно сохранять файлы контрольных точек в общих папках. Затем, если происходит переход на резервный ресурс, можно перезапустить прерванный пакет с последней контрольной точки на другом узле кластера.

Защита файлов контрольных точек

Уровень защиты пакета не включает защиту файлов контрольных точек, поэтому необходимо дополнительно обеспечить их защиту. Данные контрольных точек могут быть сохранены только в файловой системе, поэтому необходимо использовать список управления доступом (ACL) операционной системы для обеспечения безопасности места расположения или папки, где хранятся файлы. Важно защитить файлы контрольных точек, так как они содержат сведения о состоянии пакета, включая текущие значения переменных. Например, переменная может содержать набор записей с многочисленными строками личных данных, таких как номера телефонов. Дополнительные сведения см. в разделе Управление доступом к файлам, используемым пакетами.

Настройка свойств контрольных точек

Значок служб Integration Services (маленький)Будьте в курсе новых возможностей cлужб Integration Services

Чтобы загружать новейшую документацию, статьи, образцы и видеоматериалы от корпорации Майкрософт, а также лучшие решения от участников сообщества, посетите страницу служб Integration Services на сайтах MSDN или TechNet:

Чтобы получать автоматические уведомления об этих обновлениях, подпишитесь на RSS-каналы, предлагаемые на этой странице.

Журнал изменений

Обновленное содержимое

  • В разделе «Определение точек перезапуска» уточнено, какие компоненты являются единицами работы.

  • Добавлен раздел «Выбор места для файлов контрольных точек».