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

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

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

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

Не решение

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

5 ответов

Решение

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

  1. BIML: BIML - это язык разметки бизнес-аналитики ( BIML Reference). Вы можете использовать файлы.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.

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

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

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

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

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

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

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

ура

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