Задача «Выполнение пакета»
Область применения: среда выполнения интеграции SSIS SQL Server в Фабрика данных 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.
Задача "Выполнение пакета" также может выполнять план обслуживания базы данных, который позволяет управлять пакетами служб SSIS и планами обслуживания базы данных в одном решении служб Integration Services. План обслуживания базы данных аналогичен пакету служб SSIS, но план может включать только задачи обслуживания базы данных, и он всегда хранится в базе данных msdb.
При выборе пакета, сохраненного в файловой системе, необходимо предоставить имя и место расположения пакета. Пакет может находиться в любом месте файловой системы; он не обязан находиться в той же папке, что и родительский пакет.
Дочерний пакет может выполняться в процессе родительского пакета или же в своем собственном процессе. Выполнение дочернего пакета в собственном процессе требует больших затрат памяти, но обеспечивает большую гибкость. Например, если процесс дочернего пакета закончится с ошибкой, родительский процесс продолжит свою работу.
С другой стороны, в некоторых задачах необходимо, чтобы родительский и дочерний пакеты прекращали свое выполнение одновременно, но иногда не имеет смысла тратить дополнительную память на другой процесс. Например, если дочерний процесс заканчивается с ошибкой, а последующая работа родительского пакета зависит от результата работы дочернего пакета, необходимо, чтобы дочерний пакет выполнялся в процессе родительского пакета.
По умолчанию свойство ExecuteOutOfProcess в задаче "Выполнение пакета" равно значению False, а дочерний пакет выполняется в том же процессе, что и родительский пакет. Если установить свойство в значение True, дочерний пакет запускается в отдельном процессе. Это может замедлить запуск дочернего пакета. Кроме того, если задано значение свойства True, то выполнять отладку пакета в установке только для инструментов нельзя. Необходимо установить службы Integration Services. Дополнительные сведения см. в разделе Установка служб Integration Services.
Расширение транзакций
Транзакции, используемые родительским пакетом, могут быть расширены на дочерний пакет; таким образом, работа, выполняемая обоими пакетами, может фиксироваться и откатываться. Например, вставка в базу данных, производимая родительским пакетом, может фиксироваться или откатываться в зависимости от вставки в базу данных, которую производит дочерний пакет, и наоборот. Дополнительные сведения см. в разделе Inherited Transactions.
Распространение подробностей журналов
Дочерний пакет, запущенный задачей «Выполнение пакета», может быть настроен для использования журнала, а может быть и не настроен, однако он всегда отправляет родительскому пакету подробные сведения для журнала. Если задача «Выполнение пакета» настроена для использования журнала, она регистрирует подробности журнала дочернего пакета. Дополнительные сведения см. в статье Ведение журналов в службах Integration Services (SSIS).
Передача значений дочерним пакетам
Часто дочерний пакет использует значения, переданные ему вызвавшим его пакетом, обычно его родительским пакетом. Значения, переданные родительским пакетом, удобно использовать в следующих случаях:
Части большого рабочего процесса присваиваются различным пакетам. Например, один пакет загружает данные, суммирует их и присваивает переменным значения суммарных данных, а затем передает значения другому процессу для дополнительной обработки данных.
Родительский пакет динамически координирует задачи в дочернем пакете. Например, родительский пакет определяет число дней в текущем месяце и присваивает это число переменной, а дочерний пакет выполняет задачу равное этой переменной количество раз.
Дочернему пакету необходим доступ к данным, динамически поставляемым родительским пакетом. Например, родительский пакет извлекает данные из таблицы и записывает набор строк в переменную, а дочерний пакет производит дополнительные операции над данными.
Для передачи значений в дочерний пакет вы можете использовать следующие методы:
Конфигурации пакета
Службы Integration Services предоставляют тип конфигурации , конфигурацию родительской переменной пакета для передачи значений из родительских в дочерние пакеты. Конфигурация настраивается в дочернем пакете и использует переменные родительского пакета. Конфигурация сопоставляется c переменной в дочернем пакете или свойством объекта в дочернем пакете. Переменная может также использоваться в скриптах, используемых задачей «Скрипт» или компонентом скрипта.
Параметры
Вы можете настроить задачу «Выполнение пакета» для сопоставления переменных или параметров родительского пакета либо параметров проекта с параметрами дочернего пакета. Проект должен использовать модель развертывания проекта, а дочерний пакет должен содержаться в одном проекте с родительским пакетом. Дополнительные сведения см. в разделе Execute Package Task Editor.
Примечание.
Если параметр дочернего пакета не является конфиденциальным и сопоставляется с конфиденциальным родительским пакетом, запуск дочернего пакета завершится с ошибкой.
Поддерживаются следующие условия сопоставления:
Конфиденциальный параметр дочернего пакета сопоставляется с конфиденциальным параметром родительского пакета
Конфиденциальный параметр дочернего пакета сопоставляется с неконфиденциальным параметром родительского пакета
Неконфиденциальный параметр дочернего пакета сопоставляется с неконфиденциальным параметром родительского пакета
Переменная родительского пакета может быть определена в области задачи «Выполнение пакета» или в самом пакете. Если доступно несколько переменных с одинаковыми именами, то используется та переменная, которая определена в области задачи выполнения пакетов, или ближайшая к задаче переменная из области видимости.
Дополнительные сведения см. в разделу Использование значений переменных и параметров в дочернем пакете.
Доступ к переменным родительского пакета
Дочерние пакеты могут обращаться к переменным родительского пакета с помощью задачи «Скрипт». При вводе имени переменной родительского пакета на странице Скрипт в редакторе задачи "Скрипт" не указывайте User: в имени переменной. В противном случае дочерний пакет не сможет обнаружить переменную при выполнении родительского пакета.
Настройка задачи «Выполнение пакета»
Свойства могут быть заданы с помощью конструктора SSIS или программным путем.
Дополнительные сведения о свойствах, которые можно задать в конструкторе служб SSIS, щелкните следующий раздел:
Дополнительные сведения о настройке этих свойств в конструкторе служб SSIS см. в следующем разделе:
Программная настройка задачи «Выполнение пакета»
Дополнительные сведения об установке этих свойств программными средствами см. в следующем разделе.
редактор задачи «Выполнение пакета»
Для настройки задачи «Выполнение пакета» используйте редактор задачи «Выполнение пакета». Задача "Выполнение пакета" расширяет корпоративные возможности служб Integration Services, позволяя пакетам запускать другие пакеты в рамках рабочего процесса.
Выбор действия
Открытие редактора задачи «Выполнение пакета»
Откройте проект Служб Integration Services в Visual Studio, содержащий задачу "Выполнение пакета".
Щелкните правой кнопкой задание в конструкторе служб SSIS и выберите пункт Изменить.
Задание параметров на странице «Общие»
Имя
Укажите уникальное имя для задачи «Выполнение пакета». Это имя используется в качестве метки для значка задачи.
Примечание.
Имена задач в пределах пакета должны быть уникальными.
Description
Введите описание для задачи «Выполнение пакета».
Задание параметров на странице «Пакет»
Тип ссылки
Выберите пункт меню Ссылка на проект для дочерних пакетов, содержащихся в проекте. Выберите пункт меню Внешняя ссылка для дочерних пакетов, расположенных вне проекта.
Примечание.
Если проект, в котором содержится пакет, не был преобразован в модель развертывания проекта, то параметр Тип ссылки доступен только для чтения и принимает значение Внешняя ссылка . Развертывание проектов и пакетов служб 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).
Параметр дочернего проекта
Введите или выберите имя параметра дочернего пакета.
Параметр привязки или переменная
Выберите параметр или переменную, содержащие значение, которое необходимо передать в дочерний пакет.
Прибавить
Нажмите, чтобы сопоставить параметр или переменную с параметром дочернего пакета.
Удалить
Нажмите, чтобы удалить сопоставление параметра или переменной с параметром дочернего пакета.