Выполнение одного и того же пакета служб SSIS с разными параметрами в разное время - PullRequest
10 голосов
/ 05 декабря 2011

У меня есть пакет служб SSIS, запущенный в 8 вечера вечером 2011 года.

Я хотел бы запустить этот же пакет в 8:30 вечера для 2010 года.

Я сделал файл конфигурации пакета служб SSIS и в качестве параметра принимаю «Год».Всякий раз, когда я запускаю, мне нужно открыть файл, изменить значение и запустить его.

Можно ли настроить расписание и установить значение года динамически?

Или с использованием 2 разных конфигурацийфайл это единственный способ его решить?

Спасибо всем.

1 Ответ

19 голосов
/ 05 декабря 2011

Проблема с использованием подхода с использованием файла конфигурации заключается в том, что вам необходимо постоянно изменять файл. Служба SSIS не будет перезагружать файл конфигурации после его запуска, так что вы, вероятно, можете иметь задания в 8:05 и 20:35, которые меняются файлами конфигурации, но в какой-то момент это может стать грязным и сломанным.

Я бы обработал эту ситуацию с помощью переменных командной строки ( / параметр set в dtexec ). Если бы вы запускали пакет из командной строки, он бы выглядел примерно так: dtexec.exe /file MyPackage.dtsx Даже если вы используете агент SQL, за кулисами он создает эти аргументы командной строки.

При таком подходе предполагается, что вы создаете две разные работы (против 1 запланированной работы 2 раза в день). AgentMyPackage2011 имеет шаг работы SSIS, который приводит к

  • dtexec /file MyPackage.dtsx /Set \Package.Variables[User::Year].Properties[Value];\"2011\"

и AgentMyPackage2012 имеет шаг задания служб SSIS, в результате которого

  • dtexec /file MyPackage.dtsx /Set \Package.Variables[User::Year].Properties[Value];\"2012\"

Через графический интерфейс это будет выглядеть примерно так SQL Agent Set values tab

SQL Agent Command line tab

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

<Configuration ConfiguredType="Property" Path="\Package.Variables[User::Year].Properties[Value]" ValueType="Int32">
<ConfiguredValue>2009</ConfiguredValue>

В файле уже есть путь к «вещи», которую вы пытаетесь настроить, поэтому вставьте ее в вызывающую программу, а затем отключите часть конфигурации пакета по году.

Наконец, ссылка на Приоритет конфигурации служб SSIS , поскольку существуют различия в модели 2005 г. по сравнению с 2008 г. Я вижу, что вы указали 2008 в своем тикете, но для будущих читателей, если вы используете и / SET, и источник конфигурации (xml, sql server, Registry, переменная среды), порядок операций зависит от версии.

...