Как объединить файлы пакета служб SSIS? - PullRequest
9 голосов
/ 29 марта 2011

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

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

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

Не решение

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

Ответы [ 5 ]

7 голосов
/ 30 августа 2011

Использование бесплатной надстройки 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.

6 голосов
/ 29 марта 2011

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

0 голосов
/ 13 октября 2014

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

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

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

Приветствия

0 голосов
/ 06 апреля 2011

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

0 голосов
/ 29 марта 2011

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

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

...