Автоматизация миграции объектов базы данных из системы управления версиями

StackOverflow https://stackoverflow.com/questions/52626

Вопрос

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

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

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

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

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

Это было полезно?

Решение

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

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

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

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

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

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

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top