Автоматизация миграции объектов БД из системы контроля версий - PullRequest
2 голосов
/ 09 сентября 2008

Я ищу некоторые "Рекомендации" для автоматизации развертывания хранимых процедур / Представлений / Функций / Таблиц изменений из системы контроля версий. Я использую StarTeam & ANT, поэтому о маркировке позаботились; что я ищу, так это то, как некоторые из вас подошли к автоматизации извлечения этих объектов из источника - не обязательно StarTeam.

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

Я НЕ прошу, чтобы кто-нибудь это написал - просто некоторые идеи или подходы, которые работали (или не работали) в прошлом.

Я пытаюсь навести порядок и хочу убедиться, что получаю это как можно ближе к "правому".

Мы храним таблицы / представления / функции и т. Д. В отдельных файлах в StarTeam, а наша БД - SQL 2K5.

Ответы [ 4 ]

4 голосов
/ 09 сентября 2008

Мы используем SQL Compare из redgate (http://www.red -gate.com / ).

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

База данных разработки синхронизируется с изменениями, которые разработчик внес в свою базу данных, когда они регистрируют свои изменения.

Разработчик также регистрирует сценарий синхронизации и отчет сравнения, сгенерированный SQL Compare.

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

Это работает для нас, потому что наше приложение предназначено только для внутреннего использования. Если это не ваш сценарий, я бы посмотрел на SQL Packager (также с Redgate).

3 голосов
/ 09 сентября 2008

Регистрация в Миграции (указано Эндрю Питерс в другой пост )

1 голос
/ 10 сентября 2008

Как указал Карл, вы можете использовать утилиту diff для создания ваших скриптов обновления. RedGate - хороший продукт, но SQL Server 2k5 поставляется с TableDiff , который также должен выполнять эту работу.

1 голос
/ 09 сентября 2008

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

Для таблиц я предпочитаю иметь таблицу версий базы данных с одной строкой. Используйте эту таблицу, чтобы определить, какие новые обновления не были применены. Затем применяется каждое обновление и номер версии обновляется. В случае сбоя обновления вам нужно проверить только это обновление, и вы можете повторно запустить, зная, что более ранние обновления больше не повторится.

...