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


Задача «Выполнение пакета»

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

Задачу выполнения пакета можно использовать в следующих целях.

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

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

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

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

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

Задача «Выполнение пакета» может запускать пакеты, хранящиеся в базе данных SQL Servermsdb, и пакеты, хранящиеся в файловой системе. Эта задача использует диспетчер соединений OLE DB для соединения с SQL Server и диспетчер подключения файлов для доступа к файловой системе. Дополнительные сведения см. в разделах Диспетчер соединений OLE DB и Диспетчер соединений с неструктурированными файлами.

Также задача «Выполнение пакета» может выполнять план обслуживания базы данных, что позволяет управлять пакетами служб SSIS и планами обслуживания базы данных в одном решении служб Integration Services. План обслуживания базы данных похож на пакет служб SSIS, с той лишь разницей, что план может содержать только задачи обслуживания базы данных, и он всегда хранится в базе данных msdb. Дополнительные сведения см. в разделах Обслуживание баз данных (компонент Database Engine) и Задачи обслуживания.

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

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

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

По умолчанию свойство ExecuteOutOfProcess в задаче «Выполнение пакета» равно значению False, а дочерний пакет выполняется в том же процессе, что и родительский пакет. Если установить свойство в значение True, можно отлаживать только пакеты, содержащие ограниченные функциональные возможности. Чтобы отлаживать все пакеты, поддерживаемые в данном выпуске SQL Server, необходимо установить службы Integration Services.

Расширение транзакций

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

Распространение подробностей журналов

Дочерний пакет, запущенный задачей «Выполнение пакета», может быть настроен для использования журнала, а может быть и не настроен, однако он всегда отправляет родительскому пакету подробные сведения для журнала. Если задача «Выполнение пакета» настроена для использования журнала, она регистрирует подробности журнала дочернего пакета. Дополнительные сведения см. в разделе Реализация ведения журналов в пакетах.

Передача значений дочерним пакетам

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

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

  • Родительский пакет динамически координирует задачи в дочернем пакете. Например, родительский пакет определяет число дней в текущем месяце и присваивает это число переменной, а дочерний пакет выполняет задачу равное этой переменной количество раз.

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

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

Переменная родительского пакета может быть определена в области задачи «Выполнение пакета» или в самом пакете. Если доступно несколько переменных с одинаковыми именами, то используется та переменная, которая определена в области задачи выполнения пакетов, или ближайшая к задаче переменная из области. Затем конфигурация сопоставляется переменной в дочернем пакете или свойству объекта в дочернем пакете. Также переменная может использоваться в сценариях, используемых задачами сценария ActiveX, задачами сценария или компонентами сценария.

Дополнительные сведения см. в разделе Как использовать значения родительских переменных в дочернем пакете.

Другие связанные задачи

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

Дополнительные сведения об этих задачах см. в следующих разделах:

Настройка задачи «Выполнение пакета»

Свойства задаются через конструктор служб SSIS или программно.

Дополнительные сведения о свойствах, которые можно задать в конструкторе служб SSIS, см. в следующих разделах:

Дополнительные сведения об установке этих свойств в конструкторе служб SSIS см. в следующем разделе:

Программная настройка задачи «Выполнение пакета»

Дополнительные сведения об установке этих свойств программным способом см. в следующем разделе.

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

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

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