Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Задача "Выполнение пакета" расширяет корпоративные возможности служб Integration Services, позволяя пакетам запускать другие пакеты в рамках рабочего процесса.
Задачу "Выполнить пакет" можно использовать для следующих целей:
Упрощение сложного рабочего процесса управления пакетами. Эта задача позволяет разбить рабочий процесс на несколько пакетов, которые проще читать, тестировать и поддерживать. Например, при загрузке данных в звёздную схему, можно создать отдельный пакет для заполнения каждого измерения и таблицы фактов.
Повторное использование частей пакетов. Другие пакеты могут повторно использовать части рабочего процесса пакета. Например, можно создать модуль извлечения данных, который можно вызвать из разных пакетов. Каждый пакет, вызывающий модуль извлечения, может выполнять различные операции очистки данных, фильтрации или агрегирования.
Группирование рабочих единиц. Единицы работы можно инкапсулировать в отдельные пакеты и объединить в качестве транзакционных компонентов в рабочий процесс родительского пакета. Например, родительский пакет запускает вспомогательные пакеты, и, в зависимости от успешного выполнения или сбоя вспомогательных пакетов, родительский пакет фиксирует или откатывает транзакцию.
Управление безопасностью пакета. Авторы пакетов требуют доступа только к части решения с несколькими пакетами. Разделив пакет на несколько пакетов, вы можете обеспечить больший уровень безопасности, так как вы можете предоставить автору доступ только к соответствующим пакетам.
Пакет, который запускает другие пакеты, обычно называется родительским пакетом, а пакеты, выполняемые родительским рабочим процессом, называются дочерними пакетами.
Службы Integration Services включают задачи, выполняющие операции рабочего процесса, такие как выполнение исполняемых файлов и пакетных файлов. Дополнительные сведения см. в разделе "Задача выполнения процесса".
Запуск пакетов
Задача "Выполнить пакет" может запускать дочерние пакеты, содержащиеся в том же проекте, который содержит родительский пакет. Вы выбираете дочерний пакет из проекта, задав свойству ReferenceType значение Project Reference, а затем задайте свойство PackageNameFromProjectReference .
Замечание
Параметр ReferenceType готов и имеет значение External Reference , если проект, содержащий пакет, не был преобразован в модель развертывания проекта. Дополнительные сведения о преобразовании см. в разделе "Развертывание проектов на сервере Служб Integration Services".
Задача "Выполнение пакета" также может запускать пакеты, хранящиеся в базе данных и пакетах MSDB SQL Server, хранящихся в файловой системе. Задача использует диспетчер соединений OLE DB для подключения к SQL Server или диспетчеру соединений файлов для доступа к файловой системе. Дополнительные сведения см. в разделе OLE DB Connection Manager и Диспетчер соединений с неструктурированными файлами.
Задача "Выполнение пакета" также может выполнять план обслуживания базы данных, который позволяет управлять пакетами служб SSIS и планами обслуживания базы данных в одном решении служб Integration Services. План обслуживания базы данных аналогичен пакету служб SSIS, но план может включать только задачи обслуживания базы данных, и он всегда хранится в базе данных msdb.
Если выбрать пакет, хранящийся в файловой системе, необходимо указать имя и расположение пакета. Пакет может находиться в любом месте файловой системы; Он не должен находиться в той же папке, что и родительский пакет.
Дочерний пакет может быть запущен в процессе родительского пакета или в виде отдельного процесса. При выполнении дочернего пакета в собственном процессе требуется больше памяти, но это обеспечивает большую гибкость. Например, если дочерний процесс завершается сбоем, родительский процесс может продолжать выполняться.
Кроме того, иногда требуется, чтобы родительские и дочерние пакеты выполнялись вместе как одна единица, или вы не хотите нести дополнительную нагрузку на другой процесс. Например, если дочерний процесс завершился с ошибкой и последующая обработка в родительском процессе пакета зависит от его успешного завершения, то дочерний пакет должен выполняться в процессе родительского пакета.
По умолчанию свойство ExecuteOutOfProcess задачи Execute Package задано False, а дочерний пакет выполняется в том же процессе, что и родительский пакет. Если для этого свойства задано значение True, дочерний пакет выполняется в отдельном процессе. Это может замедлить запуск дочернего пакета. Кроме того, если для свойства задано значение True, невозможно выполнить отладку пакета в установке только для инструментов. Необходимо установить службы Integration Services. Дополнительные сведения см. в разделе "Установка служб Integration Services"
Расширение транзакций
Транзакция, которую использует родительский пакет, может распространяться на дочерний пакет, таким образом, работа обоих пакетов может быть зафиксирована или отменена. Например, вставки в базу данных, которые выполняет родительский пакет, могут быть подтверждены или отменены в зависимости от вставок, которые выполняет дочерний пакет, и наоборот. Дополнительные сведения см. в разделе "Унаследованные транзакции".
Распространение сведений о ведении журнала
Дочерний пакет, который выполняется задачей "Выполнение пакета", может быть настроен или не настроен для использования ведения журнала, но дочерний пакет всегда перенаправит сведения журнала в родительский пакет. Если задача "Выполнить пакет" настроена для использования ведения журнала, задача регистрирует сведения журнала из дочернего пакета. Дополнительные сведения см. в статье Ведение журналов в службах Integration Services (SSIS).
Передача значений дочерним пакетам
Часто дочерний пакет использует значения, передаваемые другому пакету, который вызывает его, как правило, его родительский пакет. Использование значений из родительского пакета полезно в таких сценариях, как:
Части большего рабочего процесса назначаются разным пакетам. Например, один пакет загружает данные на ночной основе, суммирует данные, назначает суммарные значения данных переменным, а затем передает значения другому пакету для дополнительной обработки данных.
Родительский пакет динамически координирует задачи в дочернем пакете. Например, родительский пакет определяет количество дней в текущем месяце, присваивает это число переменной, а дочерний пакет выполняет задачу это число раз.
Дочерний пакет требует доступа к данным, динамически производным от родительского пакета. Например, родительский пакет извлекает данные из таблицы и загружает набор строк в переменную, а дочерний пакет выполняет дополнительные операции с данными.
Для передачи значений дочернему пакету можно использовать следующие методы:
Конфигурации пакетов
Службы Integration Services предоставляют конфигурацию типа "переменная родительского пакета" для передачи значений из родительских в дочерние пакеты. Конфигурация основана на дочернем пакете и использует переменную в родительском пакете. Конфигурация сопоставляется с переменной в дочернем пакете или свойством объекта в дочернем пакете. Переменная также может использоваться в сценариях, используемых задачей скрипта или компонентом скрипта.
Параметры
Задачу "Выполнить пакет" можно настроить для сопоставления родительских переменных или параметров пакета или параметров проекта с дочерними параметрами пакета. Проект должен использовать модель развертывания проекта, а дочерний пакет должен содержаться в том же проекте, который содержит родительский пакет. Дополнительные сведения см. в редакторе задач "Выполнение пакета".
Замечание
Если параметр дочернего пакета не является конфиденциальным и сопоставлен с родительским параметром, который является конфиденциальным, дочерний пакет не запустится.
Поддерживаются следующие условия сопоставления:
- Конфиденциальный параметр дочернего пакета сопоставляется с конфиденциальным параметром родителя.
- Чувствительный параметр дочернего пакета сопоставляется с нечувствительным параметром родителя.
- Нечувствительный параметр дочернего пакета сопоставляется с нечувствительным параметром родительского.
Родительская переменная пакета может быть определена в области задачи "Выполнение пакета" или в родительском контейнере, например в пакете. Если доступны несколько переменных с одинаковым именем, то используется переменная, определенная в области задачи "Выполнение пакета", или переменная, близкая к области задачи.
Дополнительные сведения см. в разделе "Использование значений переменных и параметров" в дочернем пакете.
Доступ к родительским переменным пакета
Дочерние пакеты могут получить доступ к родительским переменным пакета с помощью задачи "Скрипт". При вводе имени родительской переменной пакета на странице "Скрипт " в редакторе задач скрипта не включайте пользователя: в имя переменной. В противном случае дочерний пакет не находит переменную при запуске родительского пакета. Дополнительные сведения об использовании задачи "Скрипт" для доступа к переменным родительского пакета см. в этой записи блога, SSIS: доступ к переменным в родительском пакете.
Настройка задачи выполнения пакета
Свойства могут быть заданы с помощью конструктора SSIS или программным путем.
Чтобы получить дополнительную информацию о свойствах, которые можно задать в конструкторе SSIS, щелкните один из следующих разделов:
Дополнительные сведения о настройке этих свойств в конструкторе служб SSIS см. в следующем разделе:
Связанные материалы
Запись блога, SSIS: доступ к переменным в родительском пакете на andyleonard.blog.