Переменные служб Integration Services

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

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

  • Обновление свойств элементов пакета во время выполнения. Например, можно динамически задать количество параллельно исполняемых объектов, которые допускаются контейнером «цикл по каждому элементу».

  • Включение таблицы уточняющих запросов в памяти. Например, пакет может запустить задачу «Выполнение SQL», загружающую переменную со значениями данных.

  • Загрузка переменных со значениями данных и использование их для задания условий поиска в предложении WHERE. Например, сценарий в задаче «Сценарий» может обновить значение переменной, которая используется инструкцией Transact-SQL в задаче «Выполнение SQL».

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

  • Заполнение значений параметров инструкций Transact-SQL во время выполнения. Например, пакет может запустить задачу «Выполнение SQL» и затем динамически задавать параметры в инструкции Transact-SQL.

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

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

Все переменные — как системные, так и определенные пользователем — могут быть использованы в связывании параметров, которые использует задача «Выполнение SQL» для сопоставления переменных параметрам в инструкциях SQL. Дополнительные сведения см. в разделах Задача служб SSIS «Выполнение SQL» и Работа с параметрами и коды возврата в задаче «Выполнение SQL».

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

В именах пользовательских и системных переменных учитывается регистр.

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

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

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

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

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

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

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

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

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

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

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

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

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

Пространство имен

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

Область

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

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

Значение

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

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

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

Свойства можно задавать через конструктор служб SSIS или программно.

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

Программная настройка переменных

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

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

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

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