Я не думаю, что существует простой и легкий способ сделать настраиваемую передачу параметров простой для настройки пользователями / развертывателями. Ниже приводится набросок полусложного, который я сделал несколько лет назад.
Задание агента 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 лет в нескольких средах, и установка новой является документированным и, таким образом, относительно безболезненным процессом.
Существует множество способов реализации такого рода функций, и это только один из них.