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


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

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

Пользовательские и системные переменные

Службы Integration Services предоставляют системные переменные и поддерживают определяемые пользователем переменные. При создании нового пакета, добавлении контейнера или задачи в пакет или создании обработчика событий службы Integration Services включают набор системных переменных для контейнера. Системные переменные хранят полезную информацию о пакете, контейнере, задаче или обработчике событий. Например, во время выполнения системная переменная MachineName хранит имя компьютера, на котором запущен пакет, а переменная StartTime — время начала выполнения пакета. Системные переменные доступны только для чтения. Дополнительные сведения см. в статье System Variables.

Можно создавать пользовательские переменные и задействовать их в пакетах. Определяемые пользователем переменные можно использовать в службах SSIS разными способами: в сценариях; в выражениях, используемых с помощью ограничений очередности, контейнер For Loop, преобразование "Производный столбец" и преобразование "Условное разбиение"; и в выражениях свойств, которые обновляют значения свойств.

Например, пользовательскую переменную можно задействовать в вычислении условия для контейнера «цикл по элементам». Можно также сопоставить значение перечислителя коллекции в контейнере «цикл по каждому элементу» с переменной, а если задача «Выполнение SQL» содержит параметризованную инструкцию, то можно сопоставить параметры инструкции с переменными. Дополнительные сведения см. в статье Переменные в службах Integration Services (SSIS).

Сценарии использования переменных

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

Выражение свойств. Используйте переменные для предоставления значений в выражениях свойств, устанавливающих свойства пакетов и объектов пакетов. Например, выражение SELECT * FROM @varTableName включает переменную varTableName , которая обновляет инструкцию SQL, выполняемую задачей «Выполнение SQL». Выражение DATEPART("d", GETDATE()) == 1? @[User::varPackageFirst]:@[User::varPackageOther]обновляет пакет, выполняемый задачей «Выполнение пакета», запуская пакет, указанный в переменной varPackageFirst , в первый день месяца и пакет, указанный в переменной varPackageOther , в остальные дни. Дополнительные сведения см. в разделе Использование выражений свойств в пакетах.

Выражения потоков данных. Используйте переменные для предоставления значений выражениям, используемым преобразованиями «Производный столбец» и «Условное разбиение» для заполнения столбцов или направления строк на различные выходы преобразования. Например, выражение @varSalutation + LastNameобъединяет значение переменной VarSalutation и столбец LastName . Выражение Income < @HighIncomeнаправляет на выход строки данных, в которых значение столбца Income меньше значения переменной HighIncome . Дополнительные сведения см. в статьях Преобразование "Производный столбец", Преобразование "Условное разбиение" и Выражения служб Integration Services (SSIS).

Выражения управления очередностью. Предоставляют значения для использования в управлении очередностью для определения запуска исполняемого объекта с таким управлением. Эти выражения могут использоваться вместе с результатом выполнения (успех, ошибка, завершение) либо вместо результата выполнения. Например, если выражение @varMax > @varMin получает значение true, исполняемый объект запускается. Дополнительные сведения см. в статье Добавление выражений к элементам управления очередностью.

Параметры и коды возврата. Предоставляют значения для ввода параметров или сохраняют значения выходных параметров и кодов возврата. Это можно сделать с помощью сопоставления переменных с параметрами и возвращаемыми значениями. Например, если переменная varProductId имеет значение 23 при выполнении инструкции SQL SELECT * from Production.Product WHERE ProductID = ?, запрос получит продукты с идентификатором ProductID , равным 23. Дополнительные сведения см. в разделах Задача "Выполнение SQL" и Параметры и коды возврата в задаче "Выполнение SQL".

Выражения контейнера «цикл по элементам». Предоставляют значения для использования выражений инициализации, оценки и присваивания в контейнере «цикл по элементам». Например, если переменная varCount имеет значение 2, а varMaxCount — 10, выражение инициализации будет иметь значение @varCount, выражение оценки — @varCount < @varMaxCount, а выражение присваивания — @varCount =@varCount +1, при этом цикл повторится 8 раз. Дополнительные сведения см. в статье For Loop Container.

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

Задача скрипта и компонент скрипта . Предоставляет список переменных только для чтения и чтения/записи для задач "Скрипт" и компонента скрипта, обновляет переменные для чтения/записи с помощью скрипта и использует обновленные значения в скрипте или вне его. Например, в коде numberOfCars = CType(Dts.Variables("NumberOfCars").Value, Integer)переменная скрипта numberOfCars обновлена значением переменной NumberOfCars. Дополнительные сведения см. в статье Using Variables in the Script Task.

Конфигурации и переменные

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

Добавление, изменение или удаление пользовательских переменных