Как объединить файлы пакетов SSIS?

Мне интересно, есть ли у кого-нибудь совет по слиянию файлов SSIS dtsx. Вот проблемы, которые, как я вижу, затрудняют слияние:

  • Это xml, слияние которых уже может быть проблемой.
  • Они могут иметь встроенные сценарии C #, и в этом случае они будут иметь как исходный код C #, так и строку файла dll в кодировке base64.
  • Они описывают поток данных в пакете, а также расположение элементов в среде IDE.

Если кто-нибудь из Microsoft прислушивается, многие из этих проблем решаются путем создания пакетов из нескольких файлов, а не одного файла. Один dtsx может быть xml, описывающим поток, xml, описывающим макет, некоторыми исходными файлами .cs и некоторыми dll. Но это не так. Заставляет меня задуматься, почему кто-то использует dtsx.

Нерешение

Единственное решение, которое я видел в Интернете, - это убедиться, что файл dtsx заблокирован при редактировании, чтобы изменения были только у одного пользователя. Это отлично работает, когда вы говорите только об одной ветке, но если вы работаете с несколькими копиями dtsx в разных ветках (или не дай бог, DVCS), то невозможно заблокировать их все каждый раз, когда вы вносите изменения. Кроме того, это не решит проблему, если вы не сможете убедиться, что никто другой не изменил его, прежде чем вы сможете объединить его повсюду.


person ZombieDev    schedule 29.03.2011    source источник


Ответы (5)


Использование бесплатной надстройки Visual Studio BIDS Helper может помочь решить вашу дилемму двумя способами.

  1. BIML: BIML - это язык разметки бизнес-аналитики (Справочник по BIML). Вы можете использовать файлы .biml для создания пакетов SSIS. Файлы BIML должны лучше работать с операциями слияния из-за их более жесткой структуры. Хотя у меня еще нет опыта их объединения, я использую файлы BIML для создания своих пакетов SSIS быстрее, чем это позволяет пользовательский интерфейс SSIS. Это было очень полезно для копирования-вставки похожих потоков данных и изменения только уникальных атрибутов.

  2. Smart Diff: BIDS Helper также имеет встроенную функцию Smart Diff, которая помогает сравнивать различия в SSIS. пакеты. Это не поможет автоматическому слиянию, но он удалит информацию о макете и упорядочит XML перед отображением различий. Это покажет вам фактические функциональные различия между двумя пакетами SSIS. Затем вы можете использовать эту информацию для объединения изменений вручную. Для вашего примера из вашего комментария к ответу revelator вы должны использовать Smart Diff для сравнения версии 1.0 вашего SSIS с вашей фиксированной версией в ветке 1.0, тогда вы увидите только изменения, необходимые для применения этого исправления вручную к вашей ветке 2.0.

person Zusukar    schedule 30.08.2011
comment
Я больше не занимаюсь SSIS. Но это кажется достойным ответом. Этот BIML выглядит так, как будто его было бы легче различать (так же просто, как и любой XML-файл). - person ZombieDev; 05.08.2016

Я бы рекомендовал любой ценой избегать слияния файлов dtsx - это будет мучительно! Обычно я разрабатываю проекты SSIS, чтобы разделить каждую отдельную часть работы в отдельный файл package / dtsx, а затем вызвать их из основного пакета. Это означает, что разные люди в команде могут работать над разными пакетами, не дублируя работу друг друга. Это очень хорошо работает в системе с контролем источника. Еще одно преимущество состоит в том, что каждый компонент можно запускать или тестировать независимо.

person grapefruitmoon    schedule 29.03.2011
comment
Мы делаем некоторое разделение на более мелкие пакеты, но большинство наших пакетов делают очень специфические вещи, которые не подходят для их разделения на более мелкие части. Даже с учетом этого, это работает только для того, чтобы люди не наступали друг другу на ногу в одной и той же ветке. Скажем, у нас есть пакет для импорта файла специального формата. Мы находим ошибку и исправляем ее в этом dtsx в версии 1.0 нашего программного обеспечения. Но в ветке 2.0 части import.dtsx были изменены, чтобы повысить производительность или что-то в этом роде. Эти два изменения должны быть объединены, иначе мы столкнемся с этой ошибкой снова, когда выйдет 2.0. - person ZombieDev; 29.03.2011

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

Однако рекомендуется работать с меньшими пакетами, поскольку они просто быстрее реагируют.

person cairnz    schedule 29.03.2011
comment
Копирование содержимого одного dtsx (назовем его источником) в другой (назовем его целевым) и сохранение не объединяется. Это просто отбрасывание всего, что изменилось в цели. Если изменились и источник, и цель, вы хотите, чтобы конечный результат был комбинацией изменений от обоих. - person ZombieDev; 29.03.2011
comment
Я думал о таком слиянии, о слиянии файлов a и b - не в системе управления исходным кодом: | Не обращать внимания на мои комментарии - person cairnz; 30.03.2011

Если вам нужны реальные возможности слияния, вам придется вручную кодировать пакеты. Из-за всей проводки (идентификаторы происхождения и т. Д.) И особенностей конструктора в XML нет способа объединить изменения между файлами, не нарушая ни потоки данных, ни макет.

person cnordbakk    schedule 06.04.2011
comment
Я тоже так думаю. Что вы не можете их объединить. Я бы отметил это как ответ, но на самом деле это лишь подтверждение проблемы. Я не знаю, есть ли ответ - person ZombieDev; 07.04.2011

Взгляните на трансформаторы BIML. BIML (язык разметки бизнес-аналитики) - это гораздо более простой способ редактировать и контролировать ваши пакеты SSIS. Просто загрузите помощник BIDS и прочтите эту статью.

http://bimlscript.com/Walkthrough/Details/68

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

Ваше здоровье

person gazma    schedule 13.10.2014
comment
в настоящее время функция доступна только в Mist. - person Doc; 10.05.2017