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

Применимо к: SQL Server Integration Runtime служб SSIS в Фабрика данных Azure

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

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

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

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

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

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

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

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

Запуск пакетов

Задача «Выполнение пакета» может запускать дочерние пакеты, которые содержатся в одном проекте с родительским пакетом. Чтобы выбрать дочерний пакет из проекта, необходимо задать свойству Тип ссылки значение Ссылка на проект, а затем установить свойство PackageNameFromProjectReference .

Примечание

Если проект, в котором содержится пакет, не был преобразован в модель развертывания проекта, то параметр Тип ссылки доступен только для чтения и принимает значение Внешняя ссылка . Развертывание проектов и пакетов служб Integration Services (SSIS).

Задача "Выполнение пакета" может также запускать пакеты, хранящиеся в базе данных msdb SQL Server , и пакеты, хранящиеся в файловой системе. Эта задача использует диспетчер соединений OLE DB для соединения с SQL Server или диспетчер соединения файлов для доступа к файловой системе. Дополнительные сведения см. в разделах OLE DB Connection Manager и Flat File Connection Manager.

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

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

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

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

По умолчанию свойство ExecuteOutOfProcess в задаче "Выполнение пакета" равно значению False, а дочерний пакет выполняется в том же процессе, что и родительский пакет. Если установить свойство в значение True, дочерний пакет запускается в отдельном процессе. Это может замедлить запуск дочернего пакета. Кроме того, если задано значение свойства True, то выполнять отладку пакета в установке только для инструментов нельзя. Необходимо установить Службы Integration Services. Дополнительные сведения см. в разделе Установка служб Integration Services.

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

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

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

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

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

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

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

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

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

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

  • Конфигурации пакета

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

  • Параметры

    Вы можете настроить задачу «Выполнение пакета» для сопоставления переменных или параметров родительского пакета либо параметров проекта с параметрами дочернего пакета. Проект должен использовать модель развертывания проекта, а дочерний пакет должен содержаться в одном проекте с родительским пакетом. Дополнительные сведения см. в разделе Execute Package Task Editor.

    Примечание

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

    Поддерживаются следующие условия сопоставления:

    Конфиденциальный параметр дочернего пакета сопоставляется с конфиденциальным параметром родительского пакета

    Конфиденциальный параметр дочернего пакета сопоставляется с неконфиденциальным параметром родительского пакета

    Неконфиденциальный параметр дочернего пакета сопоставляется с неконфиденциальным параметром родительского пакета

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

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

Доступ к переменным родительского пакета

Дочерние пакеты могут обращаться к переменным родительского пакета с помощью задачи «Скрипт». При вводе имени переменной родительского пакета на странице Скрипт в редакторе задачи "Скрипт" не указывайте User: в имени переменной. В противном случае дочерний пакет не сможет обнаружить переменную при выполнении родительского пакета.

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

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

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

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

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

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

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

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

Выбор действия

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

  1. Откройте в среде Службы Integration Services проект служб Visual Studio , содержащий задачу «Выполнение пакета».

  2. Щелкните правой кнопкой задание в конструкторе служб SSIS и выберите пункт Изменить.

Задание параметров на странице «Общие»

имя;
Укажите уникальное имя для задачи «Выполнение пакета». Это имя используется в качестве метки для значка задачи.

Примечание

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

Описание
Введите описание для задачи «Выполнение пакета».

Задание параметров на странице «Пакет»

Тип ссылки
Выберите пункт меню Ссылка на проект для дочерних пакетов, содержащихся в проекте. Выберите пункт меню Внешняя ссылка для дочерних пакетов, расположенных вне проекта.

Примечание

Если проект, в котором содержится пакет, не был преобразован в модель развертывания проекта, то параметр Тип ссылки доступен только для чтения и принимает значение Внешняя ссылка . Развертывание проектов и пакетов служб Integration Services (SSIS).

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

ExecuteOutOfProcess
Укажите, должен дочерний пакет выполняться в процессе родительского пакета или в отдельном процессе. По умолчанию свойство ExecuteOutOfProcess в задаче "Выполнение пакета" равно значению False, а дочерний пакет выполняется в том же процессе, что и родительский пакет. Если установить свойство в значение true, дочерний пакет запускается в отдельном процессе. Это может замедлить запуск дочернего пакета. Кроме того, если свойству задано значение true, то выполнять отладку пакета только при установке средств нельзя. Для этого необходимо установить продукт службы Службы Integration Services . Дополнительные сведения см. в статье Установка служб Integration Services.

Динамические параметры ReferenceType

ReferenceType = внешняя ссылка

Расположение
Выберите местоположение дочернего пакета. Это свойство имеет параметры, указанные в следующей таблице.

Значение Описание
SQL Server Установите местонахождение экземпляра SQL Server.
Файловая система Указывает, что местоположение находится в файловой системе.

Соединение
Выберите тип места хранения дочернего пакета.

PackageNameReadOnly
Отображает имя пакета.

ReferenceType = ссылка на проект

PackageNameFromProjectReference
Выберите пакет, содержащийся в проекте, который станет дочерним пакетом.

Динамические параметры местоположения

Местонахождение = SQL Server

Соединение
Выберите диспетчер подключений OLE DB в списке или щелкните <Создать соединение...>, чтобы создать его.

См. также:Диспетчер подключений OLE DB

PackageName
Введите имя дочернего пакета или нажмите кнопку с многоточием (...) и определите местоположение пакета.

Местоположение = файловая система

Соединение
Выберите в списке диспетчер подключений файлов или щелкните <Создать подключение...>, чтобы использовать новый диспетчер подключений.

См. также:Диспетчер соединения файлов

PackageNameReadOnly
Отображает имя пакета.

Задание параметров на странице «Привязки параметров»

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

Сведения о преобразовании проектов в модель развертывания проектов см. в разделе Развертывание проектов и пакетов служб Integration Services (SSIS).

Параметр дочернего проекта
Введите или выберите имя параметра дочернего пакета.

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

Добавление
Нажмите, чтобы сопоставить параметр или переменную с параметром дочернего пакета.

Удалить
Нажмите, чтобы удалить сопоставление параметра или переменной с параметром дочернего пакета.