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

Параметры SSIS

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

История и развитие

Механизм параметров был введён в SQL Server 2012 (версия 11.0) в составе обновлённой модели развёртывания SSIS — модели проекта. До этого в SSIS 2005 и 2008 для настройки пакетов использовались конфигурации пакетов (Package Configurations), которые хранились в XML-файлах, таблицах базы данных или переменных среды. Параметры пришли на смену конфигурациям, предложив более строгую типизацию, интеграцию с системой управления версиями и возможность централизованного управления через среду SQL Server Management Studio (SSMS) и каталог SSISDB.

В SQL Server 2014 и более поздних версиях механизм параметров был расширен: появилась поддержка параметров среды (Environment Parameters), которые связывают значения параметров с переменными среды, что упростило перенос пакетов между разными средами (например, Dev, Test, Prod). В SQL Server 2016 и 2017 были улучшены средства мониторинга и отладки параметров в каталоге SSISDB.

Типы параметров

В SSIS выделяют два основных типа параметров, различающихся по области действия и способу задания:

Параметры проекта (Project Parameters)

Параметры проекта определяются на уровне проекта SSIS и могут использоваться всеми пакетами внутри этого проекта. Они задаются в файле проекта (.dtproj) и хранятся в каталоге SSISDB при развёртывании. Типичные примеры — строки подключения к базам данных, пути к сетевым папкам, коды окружения (например, «DEV», «TEST», «PROD»). Параметры проекта доступны для чтения из любого пакета проекта, но не могут быть изменены во время выполнения пакета.

Параметры пакета (Package Parameters)

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

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

Каждый параметр в SSIS обладает набором свойств, определяющих его поведение:

  • Имя (Name)уникальный идентификатор параметра в пределах проекта или пакета. Имя должно соответствовать правилам именования идентификаторов SQL Server.
  • Тип данных (DataType) — задаётся из набора поддерживаемых типов SSIS: Boolean, Int32, Int64, String, DateTime, Decimal, Single, Double, Byte, Object, и другие. Тип данных определяет, какие значения могут быть присвоены параметру.
  • Значение по умолчанию (DefaultValue) — значение, которое используется, если параметр не был явно задан при запуске пакета. Значение по умолчанию указывается при разработке и может быть изменено в каталоге SSISDB после развёртывания.
  • Чувствительность (Sensitive) — логическое свойство, указывающее, содержит ли параметр конфиденциальные данные (например, пароль, ключ API). Чувствительные параметры шифруются при хранении в каталоге SSISDB и не отображаются в открытом виде в интерфейсах мониторинга. Значение чувствительного параметра можно задать только при выполнении или через среду, но не через пользовательский интерфейс.
  • Обязательность (Required) — если свойство установлено в True, параметр должен быть явно задан перед выполнением пакета. В противном случае используется значение по умолчанию.
  • Описание (Description) — текстовое поле для пояснения назначения параметра. Описание отображается в среде разработки и в каталоге SSISDB.

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

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

  • Строки подключения: параметры проекта или пакета задают сервер, базу данных, имя пользователя и пароль для соединений OLE DB, ADO.NET, ODBC и других.
  • Пути к файлам: параметры определяют расположение входных и выходных файлов (CSV, Excel, XML), что позволяет перенаправлять потоки данных в зависимости от среды.
  • Пороговые значения и фильтры: параметры передают числовые или строковые значения в задачи SQL, выражения потока данных или условия в контейнерах «Цикл по каждому элементу».
  • Логические флаги: параметры типа Boolean управляют включением или отключением отдельных задач или ветвей выполнения (например, включение/отключение логирования).

Для использования параметра в выражении или свойстве задачи необходимо обратиться к нему через синтаксис @[$Project::ParameterName] для параметров проекта или @[$Package::ParameterName] для параметров пакета. Например, в выражении для задачи «Выполнение SQL» можно написать: SELECT * FROM Orders WHERE OrderDate >= @[$Project::StartDate].

Управление параметрами после развёртывания

После развёртывания проекта в каталог SSISDB (база данных SSISDB на экземпляре SQL Server) параметры становятся доступными для управления через среду SQL Server Management Studio (SSMS) или через хранимые процедуры T-SQL. Основные операции:

  • Просмотр и изменение значений: в узле «Проекты» каталога SSISDB можно просмотреть список параметров, их типы, значения по умолчанию и установить новые значения для конкретной среды.
  • Связывание с параметрами среды: параметры среды (Environment Parameters) позволяют задать значения параметров проекта или пакета через переменные среды, которые создаются в каталоге SSISDB. Это позволяет централизованно управлять настройками для разных сред (например, «DEV», «TEST», «PROD») и автоматически применять их при выполнении пакетов.
  • Выполнение пакетов с параметрами: при запуске пакета через SSMS, SQL Server Agent или T-SQL можно явно передать значения параметров, переопределяя значения по умолчанию и значения из среды.

Пример T-SQL для выполнения пакета с параметром:

``sql DECLARE @execution_id BIGINT EXEC [SSISDB].[catalog].[create_execution] @package_name=N'Package.dtsx', @project_name=N'MyProject', @folder_name=N'MyFolder', @use32bitruntime=False, @execution_id=@execution_id OUTPUT EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id, @object_type=30, @parameter_name=N'StartDate', @parameter_value=N'2025-01-01' EXEC [SSISDB].[catalog].[start_execution] @execution_id ``

Отличия от переменных и конфигураций

Параметры часто путают с переменными SSIS, однако между ними есть принципиальные различия:

  • Изменяемость: переменные могут изменять своё значение в процессе выполнения пакета (например, в контейнерах «Цикл по каждому элементу»), параметры — нет. Параметры задаются до выполнения и остаются постоянными.
  • Область видимости: переменные могут быть локальными (в пределах задачи, контейнера или пакета) или глобальными (системные переменные). Параметры имеют область проекта или пакета и не могут быть созданы внутри контейнера.
  • Назначение: переменные предназначены для временного хранения данных и управления потоком выполнения (например, счётчики циклов, флаги состояния). Параметры — для внешней настройки пакета без его изменения.
  • Развёртывание: переменные не сохраняются в каталоге SSISDB и не могут быть изменены после развёртывания без редактирования пакета. Параметры, напротив, являются частью метаданных проекта и могут быть изменены в каталоге.

По сравнению с конфигурациями пакетов (Package Configurations), параметры обеспечивают более строгую типизацию, поддержку чувствительных данных и интеграцию с каталогом SSISDB. Конфигурации пакетов, хотя и поддерживаются в SSIS 2012 и более поздних версиях для обратной совместимости, считаются устаревшим механизмом.

Ограничения и особенности

  • Параметры не поддерживают сложные типы данных, такие как таблицы или массивы. Для передачи множества значений приходится использовать сериализацию (например, в XML-строку) или временные таблицы.
  • Максимальное количество параметров в проекте или пакете не ограничено явно, но практические ограничения связаны с производительностью и удобством управления.
  • Параметры не могут быть использованы в выражениях, которые вычисляются на этапе разработки (например, в свойствах «Выражение» компонентов потока данных, если они не привязаны к переменным).
  • Для параметров, помеченных как чувствительные, значения не отображаются в журналах выполнения и не могут быть прочитаны через стандартные представления каталога SSISDB.

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

В промышленных ETL-решениях параметры являются стандартным инструментом для настройки пакетов под разные среды. Например, в проектах по интеграции данных для розничной сети параметры могут задавать:

  • строку подключения к операционной базе данных (OLTP) — для каждого магазина свой сервер;
  • путь к сетевой папке с файлами выгрузки — для тестовой и продуктивной среды разные пути;
  • дату начала загрузки — для инкрементальной загрузки данных;
  • флаг включения детального логирования — для отладки в тестовой среде.

Использование параметров позволяет разработчикам создавать универсальные пакеты, которые затем настраиваются администраторами или операторами без участия разработчика, что сокращает время развёртывания и снижает риск ошибок.

Источники

  • Microsoft Docs: SQL Server Integration Services (SSIS) Parameters
  • Microsoft Learn: Package and Project Parameters in SSIS
  • SQL Server Books Online (BOL) for SQL Server 2012–2019
  • Статья «SSIS Parameters vs Variables» на сайте SQLShack
  • Документация по каталогу SSISDB (SSISDB Catalog)

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

На главную BFOmetr →