Как проводить массовые обновления пакетов SSIS через BIML? - PullRequest
0 голосов
/ 25 января 2019

Вот сценарий, с которым у меня возникли проблемы:

Допустим, я использовал BIML для генерации (заглушки) более 50 пакетов SSIS ... Для простоты, скажем, у каждого из них только один Execute SQLЗадача.

Package1
-> SQL Audit (INSERT INTO auditTable(val1) values ?)
Package2
-> SQL Audit (INSERT INTO auditTable(val1) values ?)
...
Package50
-> SQL Audit (INSERT INTO auditTable(val1) values ?)

Теперь я делаю изменения для каждого пакета для каждого пакета ...

Package1
-> SQL Audit (INSERT INTO auditTable(val1) values ?)
-> Add Dataflow: DFT Stage Data
Package2
-> SQL Audit (INSERT INTO auditTable(val1) values ?)
-> Add Expression: EXP SET Variable Value
...
Package50
-> SQL Audit (INSERT INTO auditTable(val1) values ?)
-> Add Script: SCT Call Webservice

На данный момент я создал 50 пакетов, используя шаблон BIML с (INSERT INTO auditTable(val1) values ?) ...

но я получаю новое требование для хранения второго столбца в audTable (val1, val2) (INSERT INTO auditTable(val1,val2) values ?,?)

, поэтому я регенерирую свои пакеты 1-> 50, используяобновлен шаблон BIML ... но - при этом - я потерял все настройки, относящиеся к пакету (добавление потока данных, добавление выражения и т. д.).

Package1
-> SQL Audit (INSERT INTO auditTable(val1,val2) values ?,?)
Package2
-> SQL Audit (INSERT INTO auditTable(val1,val2) values ?,?)
...
Package50
-> SQL Audit (INSERT INTO auditTable(val1,val2) values ?,?)

Так что мой вопрос...

Какой самый простой способ справиться с этим?

Насколько я могу судить, у меня есть следующие варианты:

  • найтиКак использовать контроль версий (git или tfs) для выборочного объединения определенных частей старой версии файла в обновленный шаблон?Можно ли это сделать?Как?
  • поддерживать временную копию каждого пакета и копировать / вставлять, повторно подключать компоненты, которые были уничтожены
  • Есть ли способ настроить BIML таким образом, чтобы он перезаписывал только определенные части пакета(не все)?

** Я знаю, что есть лучшие способы разработать это ... Например, более хранимая процедура, ориентированная на будущее, вместо INSERT INTO, но яИнтересует только ответы на основную проблему - как выборочно объединить определенные части файла из предыдущей версии после того, как он был перезаписан.

1 Ответ

0 голосов
/ 25 января 2019

Создание пакета служб SSIS через Biml - это упражнение «все или ничего».Компилятор biml знает, как перевести biml в dtsx.Нет возможности генерировать dtsx, а затем сравнивать его с другим и объединять.Предполагается, что истинная форма пакета закодирована в Biml.

Проблема с выбранным вами подходом состоит в том, что вы оторвались от процесса генерации - не стучите в том, что вы сделали,когда я учился, я делал то же самое.Более подход Biml-ic будет состоять в том, чтобы изменить исходный Biml, используя метаданные и условные выражения для формирования отдельных пакетов.

Итак, что вы можете сделать сейчас?

1) Обратный инжиниринг ваших окончательных пакетов в Biml.Теперь это встроено в бесплатный продукт BimlExpress, поэтому оно просто повторяется, а не является фактором стоимости.Получив все ваши пакеты в Biml, вы можете перечислить все узлы вашего пакета, найти задачу «Выполнение SQL», соответствующую вашей цели, и исправить их.Если это действительно что-то вроде одитинга, я бы абстрагировал его от всех моих отдельных пакетов и сделал его «включенным» для каждого из них.Таким образом, когда это меняется в третий раз, вы вносите одно изменение и повторно отправляете свои пакеты служб SSIS.

И дополнительная мысль будет заключаться в том, чтобы использовать BimlStudio и позволить Transformer переопределить Execute SQLУзлы задач, но это возвращает вас к платному подходу.Здесь приведен пример использования преобразователя для обновления значения.

2) Создайте пакет с исправленной задачей «Выполнение SQL» и всеми связанными привязками, а затем выберите нужный яд для редактирования текста в пакетах.,Мне нравится TextPad / WildEdit, но все будет работать, пока он может найти этот блок текста и заменить его этим новым блоком.

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