Переменные в службах Integration Services (SSIS)
Переменные хранят значения, которые пакет SQL Server Службы Integration Services и его контейнеры, задачи и обработчики событий могут использовать во время выполнения. Скрипты в задаче «Скрипт» и компоненте скрипта также могут использовать переменные. Управления очередностью, которые упорядочивают задачи и контейнеры в рабочий процесс, могут использовать переменные, если связанные с ними определения ограничений включают в себя выражения.
Переменные в пакетах служб Службы Integration Services могут использоваться в следующих целях.
Обновление свойств элементов пакета во время выполнения. Например, можно динамически задать количество параллельно исполняемых объектов, которые допускаются контейнером «цикл по каждому элементу».
Включение таблицы уточняющих запросов в памяти. Например, пакет может запустить задачу «Выполнение SQL», загружающую переменную со значениями данных.
Загрузка переменных со значениями данных и использование их для задания условий поиска в предложении WHERE. Например, скрипт в задаче «Скрипт» может обновить значение переменной, которая используется инструкцией Transact-SQL в задаче «Выполнение SQL».
Присвоение переменной значения целого числа и использование этого значения для управления циклом в потоке управления пакетом. Например, вычисляемое выражение в контейнере «цикл по каждому элементу» может использовать переменную для управления итерацией.
Заполнение значений параметров инструкций Transact-SQL во время выполнения. Например, пакет может запустить задачу «Выполнение SQL» и затем динамически задавать параметры в инструкции Transact-SQL.
Построение выражений, содержащих значения переменных. Например, преобразование «Производный столбец» может заполнить столбец результатами, полученными путем умножения значения переменной на значение столбца.
Пользовательские и системные переменные
Службы Integration Services поддерживают два типа переменных: пользовательские и системные переменные. Пользовательские переменные определяются разработчиками пакетов, а системные переменные определяются службами Службы Integration Services. Допустимо создание в пакете любого необходимого количества пользовательских переменных, однако дополнительные системные переменные не могут быть созданы.
Все переменные — как системные, так и определенные пользователем — могут быть использованы в связывании параметров, которые использует задача "Выполнение SQL" для сопоставления переменных параметрам в инструкциях SQL. Дополнительные сведения см. в разделах Задача "Выполнение SQL" и Параметры и коды возврата в задаче "Выполнение SQL".
Примечание
В именах пользовательских и системных переменных учитывается регистр.
Пользователь может создать пользовательские переменные для всех типов контейнеров служб Службы Integration Services : пакетов, контейнеров "цикл по каждому элементу", контейнеров "цикл по элементам", контейнеров последовательности, задач и обработчиков событий. Пользовательские переменные являются элементами коллекции Variables соответствующего контейнера.
При создании пакета с помощью конструктора служб Integration Services элементы коллекции Variables доступны в папках Переменные на вкладке Обозреватель пакета конструктора Integration Services . В этих папках перечисляются пользовательские и системные переменные.
Пользовательские переменные можно настроить следующими способами:
задать имя и описание переменной;
указать пространство имен для переменной;
указать, инициируется ли событие при изменении значения переменной;
указать, доступна ли переменная только для чтения или для чтения и записи;
использовать для задания значения переменной результат вычисления выражения;
создать переменную в области видимости пакета или объекта пакета, например задачи;
указать значение и тип данных переменной.
Для системной переменной доступен лишь один настраиваемый параметр: можно выбрать, инициируется ли событие при изменении ее значения.
Для разных типов контейнеров доступен разный набор системных переменных. Дополнительные сведения о системных переменных, используемых в пакетах и их элементах, см. в разделе System Variables.
Дополнительные сведения о практическом использовании переменных см. в разделе Использование переменных в пакетах.
Свойства переменной
Свойства пользовательских переменных можно установить в окне Переменные или окне Свойства . Некоторые свойства доступны только в окне «Свойства»
Примечание
Для системной переменной доступен лишь один настраиваемый параметр: можно выбрать, инициируется ли событие при изменении ее значения.
Описание
Задает описание переменной.
EvaluateAsExpression
Если свойству присвоено значение True
, предоставленное выражение используется для задания значения переменной.
Expression
Указывает выражение, назначаемое переменной.
Имя
Определяет имя переменной.
Пространство имен
Службы Integration Services предоставляют два пространства имен: User и System. По умолчанию пользовательские переменные содержатся в пространстве имен User , а системные переменные — в пространстве имен System . Можно создать дополнительные пространства имен для пользовательских переменных и переименовать пространство имен User , однако переименовать пространство имен System , добавлять переменные в пространство имен System или назначить системные переменные другому пространству имен нельзя.
RaiseChangedEvent
Если это свойство имеет значение True
, то при изменении значения переменной возникает событие OnVariableValueChanged
.
Только для чтения
Если это свойство имеет значение False
, переменная доступна для чтения и записи.
Область
Примечание
Это свойство можно изменить только в окне Переменные , нажав кнопку Переместить переменную .
Переменная создается в области пакета либо в области контейнера, задачи или обработчика события, содержащегося в этом пакете. Поскольку контейнер пакета находится на верхнем уровне иерархии контейнеров, переменные в области пакета ведут себя как глобальные переменные и могут использоваться во всех контейнерах пакета. Аналогично, переменные определенные в области контейнера, такого как «цикл по элементам», могут использоваться всеми задачами или контейнерами внутри контейнера «цикл по элементам».
Если пакет запускает другие пакеты при помощи задачи «Выполнение пакета», то переменные, определенные в области вызывающего пакета или задачи выполнения пакета, могут быть сделаны доступными для вызываемого пакета при помощи конфигурации «Переменная родительского пакета». Дополнительные сведения см. в статье Package Configurations.
IncludeInDebugDump
Указывает, включается ли значение переменной в отладочные файлы дампа.
Для определяемых пользователем переменных и системных переменных значением по умолчанию для параметра InclueInDebugDump является true
.
Однако для определяемых пользователем переменных система сбрасывает параметр IncludeInDebugDump до false
, если выполняются следующие условия:
Если свойство переменной EvaluateAsExpression имеет значение
true
, система сбрасывает параметр IncludeInDebugDump наfalse
.Чтобы включить текст выражения в качестве значения переменной в файлы дампа отладки, задайте для параметра IncludeInDebugDump значение
true
.Если тип данных переменной изменяется на строку, система сбрасывает параметр IncludeInDebugDump на
false
.
Когда система сбрасывает параметр IncludeInDebugDump на false
, это может переопределить значение, выбранное пользователем.
Значение
Значение пользовательской переменной может быть задано строкой или выражением. Переменная включает в себя параметры для установки значения и типа данных переменной. Эти два свойства должны быть совместимыми: например, недопустимо использование строкового значения совместно с типом данных integer.
Если переменная настроена как результат выражения, необходимо задать выражение. Во время выполнения выражение вычисляется, и переменной присваивается результат вычисления. Например, если переменная использует выражение DATEPART("month", GETDATE())
, значением переменной является число, равное месяцу текущей даты. Выражение должно быть действительным выражением, использующим синтаксис выражений Integration Services . Если выражение используется с переменными, оно может использовать литералы, операторы и функции, допустимые грамматикой выражений, но не может ссылаться на столбцы в потоке данных пакета. Максимальная длина выражения составляет 4000 символов. Дополнительные сведения см. в статье Выражения служб Integration Services (SSIS).
ValueType
Примечание
Значение свойства отображается в столбце Тип данных окна Переменные .
Задает тип данных для значения переменной.
Настройка переменных
Значения свойств можно задавать с помощью конструктора Integration Services или программными средствами.
Дополнительные сведения о свойствах, которые можно задать в Designer служб SSIS, см. в разделе Окно переменных.
Чтобы узнать больше о свойствах переменных и получить дополнительные сведения об их программной настройке, см. раздел Variable.
Связанные задачи
Добавление, удаление и изменение области определяемой пользователем переменной в пакете
Задание свойств переменной User-Defined
Использование значений переменных и параметров в дочернем пакете
Сопоставления параметров запросов с переменными в компонентах потока данных