Есть ли простой способ предоставить параметры для пакета служб SSIS? - PullRequest
3 голосов
/ 05 мая 2011

Как лучше всего настроить параметры для пакета служб SSIS? (Т.е. что общего / легко / просто)

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

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

Я посмотрел на конфигурации пакетов, но кажется, что они должны быть созданы разработчиком служб SSIS, а не исполнителем / развертывателем пакетов служб SSIS (возможно, я что-то упускаю)

Ответы [ 4 ]

5 голосов
/ 05 мая 2011

Конфигурации пакета создаются разработчиком, но они заполняют таблицу SQL, файл XML, реестр или переменные среды. Таким образом, выбор значений для заполнения зависит от разработчика, но фактические значения могут быть изменены при развертывании.

Я обнаружил, что лучшая комбинация - это иметь конфигурации пакета в таблице SQL со строкой соединения для этой таблицы в переменной среды. Таким образом, вы можете поддерживать различные среды для тестирования и производства.

3 голосов
/ 05 мая 2011

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

Чтобы добавить переменную View--> Другие окна -> Переменные, затем щелкните значок Добавить переменную (верхний левый)

2 голосов
/ 05 мая 2011

Я не думаю, что существует простой и легкий способ сделать настраиваемую передачу параметров простой для настройки пользователями / развертывателями. Ниже приводится набросок полусложного, который я сделал несколько лет назад.

Задание агента SQL регулярно вызывает хранимую процедуру, которая выполняет некоторые проверки и, при необходимости, подготавливает данные, запускает пакет служб SSIS и передает подготовленные данные в пакет через параметры; Значения либо получены из под рукой, либо из «таблиц конфигурации» базы данных, которые ИТ-отдел настраивает для каждой отдельной среды. Учитывая характер нашей масштабируемой среды, было проще использовать параметры, передаваемые в пакет, чем пытаться заставить пакет выяснить, куда обращаться за его данными.

Вызов пакета был выполнен путем создания сложного сценария и передачи его в качестве параметра в xp_cmdshell. DTEXEC - исполняемый файл для вызова, и он имеет обязательные и необязательные ключи, такие как / File, чтобы указать, где находится пакет. Для работы с параметрами я определил переменные sich как «FilesFolder» и «EMail_SMTPServer» внутри пакета, а затем передал им значения с помощью переключателя / Set, например:

    SET @Command = 'DTEXEC'
     + ' /File "' + @PackageLocation + '\' + @PackageName + '"'
     + ' /Set \package.variables[FilesFolder].Value;"' + @FilesFolder + '"'
     + ' /Set \package.variables[EMail_SMTPServer].Value;' + @SMTPServer

/ Set заменяет их свойство Value на указанное значение. Обратите внимание на дополнительные "кавычки для FilesFolder, чтобы учесть встроенные пробелы в имени.

Это было довольно суетно реализовать - я вспоминаю, как доставляло массу удовольствия заставить адресатов электронной почты, разделенных точкой с запятой, работать должным образом. Дело в том, что он работает без сбоев уже около 2 лет в нескольких средах, и установка новой является документированным и, таким образом, относительно безболезненным процессом.

Существует множество способов реализации такого рода функций, и это только один из них.

0 голосов
/ 05 мая 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...