Советы по использованию задачи "Выполнение процесса" и "Выполнение задачи пакета" в ssis

У меня есть родительский pkg, который вызывает несколько дочерних pkgs. Для каждого дочернего pkg у меня есть задание sql agent, которое переопределяет некоторые значения Conenctions, как в dtexec, где вы можете использовать удобную команду /Conn[ection], чтобы настроить pkg другим способом, просто указывая на таблицу сравнения SQL SSIS diff (общая картина). Проблема в том, что "Выполнить задачу пакета" (вызываемая родителем) не имеет никакой опции, кроме как вызывать сам дочерний pkg (я не могу вызвать "Выполнение задачи пакета", передавая что-то вроде /Conn[ection], как я могу сделать с dtexec), поэтому естественно coice будет использовать задачу "Выполнить процесс" для вызова dtexec на дочернем pkg с соответствующей настройкой /Conn[ection]. Исходя из вашего опыта, есть ли какие-либо недостатки / проблемы, которые следует учитывать при использовании задачи DTEXEC "Выполнение процесса", а не задачи "Выполнение пакета", или в конце они совпадают...? Марио

2 ответа

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

введите описание изображения здесь

Затем в вашем диспетчере соединений для дочернего пакета вы можете написать выражение для динамической установки строки соединения. Щелкните правой кнопкой мыши и выберите свойства для соединения в диспетчере соединений, затем объедините эти две переменные.

Код выражения:

@[User::sPkgFolder]+ @[User::sPkgFilename]

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

Как уже было объяснено SWilliams, вы можете отправлять переменные родительского пакета в дочерний пакет, используя задачу выполнения пакета, затем в дочернем пакете вы можете использовать эту переменную в выражении для установки соединения. Это гораздо менее запутанно, чем использование агента SQL, конфигураций и т. Д., И имеет дополнительный бонус: если вы запустите его параллельно, это не запутает.

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