Открыть сервис

Переменные SSIS

Переменные SSIS — это именованные контейнеры для хранения значений в среде служб SQL Server Integration Services (SSIS), являющейся компонентом Microsoft SQL Server, предназначенным для создания пакетов извлечения, преобразования и загрузки данных (ETL). Переменные предоставляют механизм для хранения и передачи значений между задачами, контейнерами и обработчиками событий в рамках одного пакета SSIS, обеспечивая гибкость, динамическую настройку и управление логикой выполнения пакетов.

Типы переменных

SSIS поддерживает два основных типа переменных:

Системные переменные

Системные переменные создаются автоматически при создании пакета SSIS и содержат предопределённые значения, доступные только для чтения во время выполнения. Они предоставляют контекстную информацию о среде выполнения, такую как имя пакета, идентификатор пакета, имя компьютера, на котором выполняется пакет, и дата начала выполнения. Примеры системных переменных:

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

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

Область видимости переменных

Каждая переменная имеет определённую область видимости, которая определяет, где в пакете она может быть использована:

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

Типы данных

Переменные SSIS поддерживают большинство стандартных типов данных платформы .NET, включая:

При присвоении значения переменной автоматически происходит приведение типа, если это возможно. В случае несоответствия типов возникает ошибка на этапе проверки или выполнения пакета.

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

В выражениях

Переменные могут использоваться в выражениях SSIS, которые применяются для динамической настройки свойств задач, контейнеров и соединений. Например, имя файла-источника данных может задаваться через выражение, содержащее значение переменной: "C:\\Data\\" + @[User::FileName]. Выражения записываются на языке выражений SSIS, который поддерживает функции для работы со строками, датами, математическими операциями и логикой.

В ограничениях с условиями (Precedence Constraints)

Переменные используются в ограничениях с условиями для управления потоком выполнения задач. Например, можно задать условие: «Выполнять следующую задачу только если значение переменной @[User::RowCount] больше 100». Это позволяет строить ветвление в зависимости от данных.

В задачах скрипта (Script Task)

Внутри задачи «Скрипт» переменные могут быть доступны для чтения и записи через объект Dts.Variables. Это позволяет реализовать сложную логику, которую невозможно выразить встроенными средствами SSIS, например, разбор нестандартных форматов данных или взаимодействие с внешними API.

В контейнерах «Цикл по каждому элементу» (Foreach Loop)

Контейнер «Цикл по каждому элементу» может перебирать элементы коллекции (например, файлы в папке, строки из БД) и присваивать значения переменным, которые затем используются внутри цикла для обработки каждого элемента.

Создание и управление

Переменные создаются в редакторе SSIS, который доступен в среде SQL Server Data Tools (SSDT) в составе Visual Studio. Для создания пользовательской переменной необходимо:

  1. Открыть окно «Переменные» (Variables window), нажав на соответствующую кнопку на панели инструментов или выбрав пункт меню SSIS → Variables.
  2. В окне создать новую переменную, указав её имя, тип данных и область видимости.
  3. При необходимости задать начальное значение.

Управление переменными включает редактирование их свойств, удаление, а также настройку чувствительности к регистру для имён.

Параметры vs Переменные

В более поздних версиях SSIS (начиная с SQL Server 2012) введен концепт параметров, которые частично заменили переменные для некоторых сценариев. Основные различия:

ХарактеристикаПеременныеПараметры
Область видимостиВнутри пакетаВнутри пакета или проекта
Модификация во время выполненияДа (пользовательские переменные)Да (для параметров пакета)
Переопределение извнеЧерез конфигурации и командыАвтоматически при развертывании проекта
Управление чувствительностью к региструЕсть (свойство Sensitive)Есть (свойство Sensitive)

Параметры рекомендуется использовать для значений, которые должны быть изменены при развертывании или выполнении пакета (например, пути к файлам, строки подключения), тогда как переменные остаются основным инструментом для внутренней логики пакета.

Примеры применения

  1. Динамическое имя файла: В задаче «Поток данных» имя файла-источника задаётся выражением, использующим переменную @[User::FileName], значение которой определяется на этапе выполнения из конфигурации или результата предыдущей задачи.
  1. Управление потоком: После выполнения задачи, загружающей данные из таблицы, проверяется количество строк. Если оно равно нулю, следующая задача (отправка уведомления) выполняется; если больше нуля — задача отправляет данные в хранилище.
  1. Логирование ошибок: Переменная @[User::ErrorCount] увеличивается на единицу внутри обработчика событий OnError. При выходе значения за предельно допустимое, выполнение пакета прерывается с помощью условия в ограничении.

Ограничения

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →