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


Переменные в службах 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 соответствующего контейнера.

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

Пользовательские переменные можно настроить следующими способами:

  • задать имя и описание переменной;

  • указать пространство имен для переменной;

  • указать, инициируется ли событие при изменении значения переменной;

  • указать, доступна ли переменная только для чтения или для чтения и записи;

  • использовать для задания значения переменной результат вычисления выражения;

  • создать переменную в области видимости пакета или объекта пакета, например задачи;

  • указать значение и тип данных переменной.

Для системной переменной доступен лишь один настраиваемый параметр: можно выбрать, инициируется ли событие при изменении ее значения.

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

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

Свойства переменной

Свойства пользовательских переменных вы можете установить в окне Переменные или окне Свойства. Некоторые свойства доступны только в окне «Свойства»

ПримечаниеПримечание

Для системной переменной доступен лишь один настраиваемый параметр: можно выбрать, инициируется ли событие при изменении ее значения.

  • Описание
    Задает описание переменной.

  • EvaluateAsExpression
    Если свойство имеет значение True, указанное выражение используется для задания значения переменной.

  • Выражение
    Указывает выражение, назначаемое переменной.

  • Название
    Определяет имя переменной.

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

  • RaiseChangedEvent
    Если это свойство имеет значение True, то при изменении значения переменной возникает событие OnVariableValueChanged.

  • ReadOnly
    Если это свойство имеет значение False, переменная доступна для чтения и записи.

  • Область

    ПримечаниеПримечание

    Это свойство вы можете изменить только в окне Переменные, нажав кнопку Переместить переменную.

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

    Если пакет запускает другие пакеты при помощи задачи «Выполнение пакета», то переменные, определенные в области вызывающего пакета или задачи выполнения пакета, могут быть сделаны доступными для вызываемого пакета при помощи конфигурации «Переменная родительского пакета». Дополнительные сведения см. в разделе Конфигурации пакета.

  • IncludeInDebugDump
    Указывает, включается ли значение переменной в отладочные файлы дампа.

    По умолчанию для системных и определенных пользователем переменных параметр InclueInDebugDump по умолчанию имеет значение true.

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

    • Если свойство переменной EvaluateAsExpression имеет значение true, то система устанавливает для параметра IncludeInDebugDump значение false.

      Чтобы включить текст выражения в отладочные файлы дампа в качестве переменной, установите параметр IncludeInDebugDump в значение true.

    • При смене типа данных переменной на строковый система устанавливает параметр IncludeInDebugDump в значение false.

    Когда система сбрасывает параметр IncludeInDebugDump в значение false, выбранное пользователем значение может быть переопределено.

  • Значение
    Значение пользовательской переменной может быть задано строкой или выражением. Переменная включает в себя параметры для установки значения и типа данных переменной. Эти два свойства должны быть совместимыми: например, недопустимо использование строкового значения совместно с типом данных integer.

    Если переменная настроена как результат выражения, необходимо задать выражение. Во время выполнения выражение вычисляется, и переменной присваивается результат вычисления. Например, если переменная использует выражение DATEPART("month", GETDATE()) , значением переменной является число, равное месяцу текущей даты. Выражение должно быть действительным выражением, использующим синтаксис выражений SSIS. Если выражение используется с переменными, оно может использовать литералы, операторы и функции, допустимые грамматикой выражений, но не может ссылаться на столбцы в потоке данных пакета. Максимальная длина выражения составляет 4000 символов. Дополнительные сведения см. в разделе Выражения служб Integration Services (SSIS).

  • ValueType

    ПримечаниеПримечание

    Значение свойства отображается в столбце Тип данных окна Переменные.

    Задает тип данных для значения переменной.

Настройка переменных

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

Дополнительные сведения о свойствах, которые можно задавать в конструкторе служб SSIS, см. в разделе Окно переменных.

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

Связанные задачи

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

Установка свойств определяемой пользователем переменной

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

Сопоставления параметров запросов с переменными в компонентах потока данных

См. также

Значок служб Integration Services (маленький) Оставайтесь в курсе последних возможностей служб Integration Services

Чтобы загрузить новейшую документацию, статьи, образцы и видеоматериалы корпорации Майкрософт, а также лучшие решения участников сообщества, посетите страницу служб Службы Integration Services на сайте MSDN:


Чтобы получать автоматические уведомления об этих обновлениях, подпишитесь на RSS-каналы, предлагаемые на этой странице.