Поддерживают ли файлы конфигурации служб SSIS принцип DRY (не повторяться)? - PullRequest
0 голосов
/ 28 июня 2011

У нас есть множество пакетов служб SSIS, которые обрабатывают файлы в указанной корневой папке «Data» и загружают ее в указанную целевую базу данных.

Естественно, корневая папка ввода изменяется в средах разработки и производства, как и база данных назначения.

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

Я легко могу иметь один файл DtsConfig для управления связью базы данных, изменяя содержимое этого файла в зависимости от того, находится ли файл в среде разработки или в производственной среде.

Ключевая часть: Однако ConnectionStrings для файлов не так просты. в идеале я хотел бы иметь возможность указать путь к файлу Connectionstring в виде% RootFolder% \ SourceSystemA \ HardCodeFileName.txt, где% Rootfolder% меняется в зависимости от среды.

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

Не уверен, что принцип «СУХОЙ», насколько я понимаю, здесь уместен, но в основном я хочу отделить те вещи, которые являются статичными, от тех, которые меняются, и позволяют легко обновлять в ОДНОМ месте и применять его везде.

Как это можно сделать?

1 Ответ

1 голос
/ 28 июня 2011

Это не идеально, но у меня есть способ сделать это.Сначала добавьте в пакет переменную для хранения имени корневой папки.Далее нажмите на ваше соединение и перейдите в свойства (F4).Измените «Выражения», нажав кнопку «...».Создайте выражение для строки подключения.В качестве выражения вы можете объединить вашу корневую папку с вашим конкретным именем файла (например, @[User::RootFolder] + "\SpecificPath\Filename.csv").

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

В ответ на заглавный вопрос - SSIS в некоторых местах поддерживает DRY, а в других - нет.Для того, что вы пытаетесь сделать, ответ - да (с помощью выражений, как указано выше).

...