Как объединить изменения из проекта базы данных VS2010 с контролируемым исходным кодом в локальную базу данных разработки - PullRequest
2 голосов
/ 12 августа 2011

Мы пробуем проекты баз данных VS2010 для новой разработки, используя следующий цикл разработки:

  • Использование Management Studio для разработки изменений в локальном экземпляре БД (с использованием конструкторов и т. Д.)
  • Используйте сравнение схемы VS2010 для синхронизации / импорта этих изменений в проект VSDB
  • Зарегистрируйтесь в проекте VSDB и запустите автоматическую сборку / тестирование и т. Д.

Когда я хочу получить последние сведения из системы контроля версий, я тогда:

  • Обновление файлов проекта VSDB из системы контроля версий
  • Используйте Schema Compare для передачи изменений из проекта в мой локальный экземпляр базы данных

Здесь он начинает ломаться ... Поскольку сравнение схем пытается синхронизировать две версии, оно пытается отменить любые изменения, которые я внес в мою локальную базу данных, как часть моей собственной разработка функций.

Очевидно, что вы можете указать сравнение схемы, чтобы пропустить изменения объектов, которые я изменил, но, к сожалению, это не всегда работает правильно: http://connect.microsoft.com/VisualStudio/feedback/details/564026/strange-schema-compare-behavior-sql-2008-database-projects.

По сути, проблема существует, потому что определения в проекте VSDB не синхронизируются автоматически с моей локальной базой данных; таким образом, мне нужно использовать Schema Compare для «слияния бедняков» каждый раз, когда я получаю изменение.

Одним из возможных решений может быть:

  • Используйте Schema Compare для синхронизации любых изменений из моей локальной БД в проект VSDB first
  • Обновление проекта VSDB из системы управления исходным кодом (поэтому для слияния используется инструмент управления исходным кодом, а не схема сравнения)
  • Схема Сравнение изменений из управления исходным кодом в моем локальном экземпляре БД

... что далеко от идеала.

Является ли RedGate SQL Source Control лучше в этом отношении?

А как насчет нового набора инструментов «Джуно» SQL?

Ответы [ 4 ]

1 голос
/ 18 апреля 2012

вы используете «Deploy» для отправки изменений источника в базу данных. Либо Deploy Solution из меню Build верхнего ряда, либо вы можете щелкнуть правой кнопкой мыши по проекту в Solution Explorer и выбрать Deploy.

Развертывание настраивается в свойствах проекта.

НТН

0 голосов
/ 10 мая 2012

Идея SQL Source Control в основном состоит в том, чтобы перевернуть процесс разработки с ног на голову - вместо того, чтобы работать со сценариями базы данных и помещать изменения в базу данных, вы вносите изменения в базу данных, а SQL Source Control вычисляет дельты иобновляет локальные сценарии и позволяет зафиксировать изменения в вашей системе управления версиями.

В настоящее время SQL Source Control интегрируется только с SQL Server Management Studio, но теперь есть пакет VS под названием SQL Connect, который можно использовать вVS 2010 для работы во многом так же, как в SQL Source Control.http://www.red -gate.com / продукты / SQL-разработка / SQL-соединение / индекс-2

0 голосов
/ 18 апреля 2012

Ваш процесс задом наперед, поэтому это сложно.Изменения должны поступать из VSDB в вашу базу данных, а не наоборот.Попробуйте это:

  1. Используйте конструкторы в Management Studio, если они вам нравятся, но запишите все сделанные вами изменения и добавьте их в свой проект VSDB.
  2. Вместо использования схемы сравнения используйтевстроенная функциональность развертывания .Это автоматически создаст сценарий и развернет инкрементные изменения в вашей локальной базе данных в один клик
0 голосов
/ 18 апреля 2012

Поскольку вы упомянули о других возможных решениях, я расскажу о том, как наш магазин управляет изменениями структуры данных и распространением их на базы данных разработчика.

Для отслеживания и применения различий мы написали приложение на C #, которое эффективно абстрагируетдействия базы данных для классов, которые мы добавляем в список действий.Механизм динамически загружает модули, которые представляют версии базы данных, и добавляет каждый элемент в модуле в список действий, которые необходимо выполнить для обновления этой версии, а затем обрабатывает список.Действия включают DataRowInsertAction, TableCreateAction, ColumnModifyAction и т. Д.

Одним из преимуществ использования этого подхода было то, что мы смогли зафиксировать стандартные файлы .cs в subversion, и пользователи могут обновлять свои собственные базы данных dev простопроверить последние и запустить его.Другим огромным преимуществом является то, что мы можем нацеливаться на несколько механизмов баз данных, поскольку сами действия знают, какой SQL-запрос отображать, в зависимости от того, на какой механизм базы данных нацелены.


В качестве дополнительного примечания мы используем AdeptSQL для сравнения баз данных.и люблю это.Это создаст полный список различий, и вы можете сгенерировать сценарий для движения в любом направлении (с учетом базы данных «A» и базы данных «B», повышения A до B или понижения B до A).

За небольшую дополнительную плату они предлагают расширенные функциональные возможности для выполнения сравнения данных.

http://www.adeptsql.com/

...