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


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

Изменения: 15 сентября 2007 г.

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

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

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

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

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

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

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

ms140226.note(ru-ru,SQL.90).gifПримечание.
Использование контрольных точек и транзакций в одном и том же пакете может привести к непредвиденным результатам. Например, если выполнение пакета оканчивается неудачей и происходит его перезапуск с контрольной точки, пакет может повторно выполнить транзакцию, которая уже успешно зафиксирована.

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

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

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

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

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

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

Свойство Описание

CheckpointFileName

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

CheckpointUsage

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

SaveCheckpoints

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

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

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

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

Свойство CheckpointUsage может принимать следующие значения:

Значение Описание

Never

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

Always

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

IfExists

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

ms140226.note(ru-ru,SQL.90).gifПримечание.
Параметр /CheckPointing on команды dtexec эквивалентен присвоению свойству SaveCheckpoints пакета значения True, а свойству CheckpointUsage значения Always. Дополнительные сведения см. в разделе Программа dtexec.

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

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

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

См. также

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

Обзор служб Integration Services

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

Создание пакетов в конструкторе служб SSIS

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

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

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

Версия Журнал

15 сентября 2007 г.

Изменения
  • Добавлено примечание об использовании контрольных точек и транзакций в одном и том же пакете.

17 июля 2006 г.

Изменения
  • Отмечено, что параметр команды dtexec CheckPointing on эквивалентен присвоению свойству SaveCheckpoints значения True, а свойству CheckpointUsage значения Always в свойствах пакета.

14 апреля 2006 г.

Изменения
  • Добавлены сведения о переменных с типом данных Object.

5 декабря 2005 г.

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