Используйте таблицу базы данных SQL Server, чтобы настроить параметры и переменные проекта SSIS

Мы хотели бы использовать таблицу SQL Server в качестве источника для всех значений диспетчера подключений в SSIS. Мы бы предпочли сделать это на уровне проекта, так как многие из наших связей уже на уровне проекта. Мы хотели бы иметь возможность легко переключаться между средами, на которые мы смотрим, на основе входного значения при открытии проекта. Причина, по которой нам нужно это сделать, заключается в том, что при создании наших проектов в dev мы используем разные соединения, чем при их развертывании в prod, и у нас используются сотни разных соединений. Мы не хотим переключать что-либо в SSIS, агенте SQL Server или каталоге SSIS. Мы хотели бы, чтобы они строго поддерживались в таблице SQL Server.

  1. Как мы можем получить эти значения из таблицы SQL Server в переменные, которые подают значения или параметры? Повторим, конечный продукт будет иметь одну единственную таблицу в SQL Server, которая содержит все столбцы, такие как [ConnectionString], [InitialCatalog], [UserName], [UserName], [Password], [HeaderRowsToSkip] и т. д. Мы бы параметризовали все диспетчеры соединений, значения которых были бы получены из этой таблицы. Нам нужно направление, как этого добиться.

  2. Я хотел бы иметь возможность содержать как PROD, так и DEV в одной таблице с [Environment] столбец, который имеет значение "Dev" или "Prod", и, если возможно, мы хотели бы, чтобы при открытии проекта в SSIS открывалось приглашение, которое спрашивает, какой [Environment] нам бы хотелось (заполняемое приглашение), которое, в свою очередь, отфильтровывало бы результаты из таблицы SQL, чтобы использовать либо Dev, либо Prod на основе того, что мы вводим.

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

2 ответа

Решение

Это звучит точно так же, как и "Переменные среды в каталоге SSIS"!

"Среда" в каталоге служб SSIS работает как файл конфигурации параметров, в вашем случае вы можете создать среду Prod/Dev и сопоставить переменные в ней с параметрами уровня проекта, которые сопоставлены с менеджерами соединений уровня проекта.

Ссылка: Переменные среды установки в службах интеграции SQL Server Создание надежной среды разработки служб SSIS с использованием каталога служб SSIS

Помимо дискуссии о том, насколько безопасным является (пароль внутри таблицы SQL Server, на самом деле?), Я сделал такой запрос, используя специальную комбинацию PowerShell и в некоторых случаях получая информацию с серверов из таблицы SQL, для этого, Вы можете использовать редактор задач SQL Script:

SELECT instanceName,databaseName,DataSource
FROM meta.InfoSSIS
WHERE environmentName = ? --Input parameter corresponding to DEV, INT or PROD

Выходными данными этого запроса должны быть объекты объекта, например, User: DatabaseList, который в основном является DataType: Object и в котором хранится информация об экземпляре SSIS, имени БД и DataSource. Внутренне у вас может быть объект ForEach Loop, который позволяет взаимодействовать с объектом DatabaseList и работать с ним.

Другие вопросы по тегам