Можно ли использовать MS VS Database Project в качестве комплексного решения для управления версиями базы данных? - PullRequest
3 голосов
/ 09 ноября 2010

В нашем проекте у нас есть несколько производственных баз данных и множество разработчиков.Каждая производственная база данных представляет некоторую «версию подпроекта / локализации».Мы используем SQL Server 2008.

Итак, мне нужно разработать стратегию управления версиями базы данных с использованием MS Visual Studio Database Project.Я прочитал много статей о версиях баз данных и проектах баз данных, но у меня все еще много вопросов:

  1. Как разработчики должны реализовать свои изменения в проекте БД?(Рекомендация)

  2. Как создать сценарий развертывания "последней версии" на 100%, работающий без вмешательства человека (пропуская некоторые объекты, переписывая некоторые изменения и т. Д.)?

  3. Как управлять изменениями данных с помощью проекта базы данных MS Visual Studio?Я знаю о сценариях до / после развертывания, но я думаю, что это не может решить эту проблему.(Пример: мне нужно переназначить одну таблицу в другую).

«Идеальным решением» было бы:

  1. Разработчики создают и поддерживают базу данныхПроект для базы данных [ProductionDB].

  2. В новом выпуске я развертываю проект базы данных в [ProductionDB] со всеми необходимыми изменениями.

  3. Изменения для разработчиковБаза данных Project и записывает некоторые сценарии манипулирования данными для конкретных изменений.

  4. В новой версии я развертываю базу данных Project в [ProductionDB] со всеми необходимыми изменениями.

Итак, последний вопрос: Возможно ли использовать Database Project для целей, описанных выше, или кто-то использует аналогичный сценарий / решение?

PS: Я уже читал следующие обсуждения:

  1. Управление версиями изменений в базе данных [закрыто]
  2. Как создать версию базы данных MS SQL в SVN?
  3. Ищем решение для базы данных версioning
  4. Существует ли система контроля версий для изменения структуры базы данных?

Ответы [ 4 ]

2 голосов
/ 10 ноября 2010

То, что вы описали, является причиной существования проекта базы данных.

Чтобы ответить на ваши вопросы:

  1. Это зависит от разработчика. Вы можете либо работать в Visual Studio, либо редактировать файлы проекта напрямую, либо редактировать оперативную копию базы данных в Mgmt Studio и использовать сравнение схем в VS для синхронизации изменений в проекте. Я использую его в течение нескольких месяцев и считаю, что оба отлично работают, хотя я склонен редактировать файлы проекта напрямую.

  2. При развертывании проекта генерируется последняя версия, если вы установите флажок, чтобы сначала удалить целевую базу данных. Вы можете сделать это без вмешательства человека, вызвав VSDBCMD во время вашей сборки

  3. Сценарии до / после развертывания предназначены именно для того, на что вы намекаете. Например, можно выбрать все данные из таблицы во временную таблицу и обрезать их во время предварительного развертывания, позволить проекту обработать миграцию схемы, а затем добавить его обратно во время развертывания. Это может быть сложно, но эту проблему никогда не было легко решить.

Надеюсь, это поможет.

2 голосов
/ 09 ноября 2010

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

  1. Разработчики просто извлекают файлы сценариев базы данных, вносят изменения и возвращают их обратно. MindВы будете изменять файлы .sql, а не непосредственно объекты, присутствующие в любой базе данных dev.Поэтому, если вам нужно добавить два столбца в таблицу базы данных, вы измените сценарий создания таблицы для этой таблицы, а НЕ напишите сценарий изменения для этой таблицы.

  2. Если у вас естьцелевая старая версия схемы БД - вы можете просто развернуть этот проект с последними файлами в этой базе данных, и сценарий развертывания будет создан (с необходимыми инструкциями alter).Существует параметр проекта, который позволяет вам выбрать, следует ли запускать сценарий развертывания для базы данных при развертывании.

  3. Сценарий развертывания может быть конечным продуктом, который тестируется отдельно.против копии продукта, а затем применяется к продукту как патч.

О скриптах манипулирования данными Я не очень уверен, однако для всех других целей, которые вы упомянули, проект базы данных идеален.

0 голосов
/ 09 декабря 2010

Возможно, вы захотите взглянуть на open-source bsn ModuleStore toolkit , который пытается реализовать этот рабочий процесс (и на самом деле он также делает больше).

0 голосов
/ 14 ноября 2010

Проблему с данными трудно решить. Здесь, в Red Gate, у нас было много запросов на это для нашего SQL Source Control инструмента, который имеет параллели с проектами баз данных VS. Хорошей новостью является то, что мы активно добавляем поддержку для этого, и мы должны иметь раннюю сборку, чтобы опробовать ее до Рождества. Если вам интересно, просто подпишитесь на уведомления раннего доступа на http://www.surveymk.com/s/SqlSourceControl_EapSignup. Мы хотели бы получить ваш отзыв.

...