Использование переменных в пакетах
Переменные являются полезным и гибким дополнением к пакетам служб 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.
Конфигурации и переменные
Чтобы динамически обновлять переменные, можно создавать конфигурации для переменных, развертывать их вместе с пакетами и обновлять значения переменных в файле конфигурации при развертывании пакета. Во время выполнения пакет будет использовать обновленные значения переменных. Дополнительные сведения см. в разделе Создание конфигурации пакетов.