2010-02-17 3 views
10

Описание проблемы:Ищет решение для управления версиями базы данных

В нашем проекте имеется одна «производственная база данных» и множество «разработчиков». Мы хотим знать, как мы можем управлять и устанавливать изменения. У нас уже есть несколько процедур, но это занимает много времени и иногда вызывает ошибки.

Мы не можем потерять данные - поэтому мы не можем использовать «таблицу отбрасывания». Мы можем использовать только «alter table».

Наша фактическая «процедура дб управления версиями», как это:

  • У нас есть таблица с именем [actual_version], который содержит актуальную версию установленной БД схемы
  • У нас есть файл с именем «changes_script. SQL», который содержит все изменения базы данных - этот файл хранится на SVN

Когда разработчик хочет зафиксировать новую ревизию на SVN, он должен change_script.sql, добавив блок:

if ([acctual_version].version < "23")) { 
    --- sql script ---- 
updateVersionTo("23") 
end if 

Когда мы хотим обновить схему базы данных, мы просто «выполнить» change_scripts.sql

Кто-нибудь есть идея получше?

+0

Спасибо за ответ ... Я думаю, что все, что нам нужно, это хорошие инструменты DB Comparer. Что я хочу сделать, выберите dev_db и production_db и нажмите кнопку «Найти разницу». Затем я могу скопировать его вручную для изменения сценария. У вас есть идея? Мы протестировали Sql Compare Red Gate и это было не очень полезно – itdebeloper

+1

Привет! Я менеджер продуктов в Red Gate, и мне любопытно узнать, какие недостатки SQL Compare были для вас. Пожалуйста, не стесняйтесь связаться! Моя электронная почта David.Atkinson на Red-Gate.com –

ответ

1

Слышали ли вы о Visual Studio Database Edition? Если вы используете VS Team Suite или VS Developer Edition, вы получаете его бесплатно. Это инструмент управления схемой базы данных, который поддерживает вашу схему, позволяет рефакторинг, сборку, анализ кода и развертывание.

Мы используем его для управления нашими схемами и развертываниями БД. Отличный инструмент.

5

Красные ворота в Sql Compare инструмент может сравнить две таблицы (или два набора сценариев DDL, или один набор скриптов для таблицы и т.д.) и создать сценарий миграции для вас.

Если вы работаете в Ruby, вы можете посмотреть в «Ruby Migrations», который является формализованным способом выполнения версий БД в коде. (Аналогичные вещи в .NET такие, как RikMigrations и Fluent Migrator, и я уверен, что подобные вещи существуют и для других платформ).

Как сказал Рэнди Миндер, вы также можете использовать VS DB Edition для управления своей схемой, хотя я считаю, что инструменты RedGate работают так же легко и не привязывают вас к определенной платформе или IDE.

+0

@Seth - VS Database Edition делает гораздо больше, чем просто сравнение схем, это средство управления или управления версиями базы данных. Мы используем его для контроля версий нашей схемы БД в TFS. –

+0

@ Randy: Точка взята, я не имел в виду, что выпуск БД был плохой. Я имел в виду, что я использовал SQL Compare и TFS для изменений схемы управления версиями между версиями программного обеспечения, и что если лицензия VS является чрезмерно дорогой или если кто-то не работает в .NET, то не слишком сложно перевернуть свою собственную систему используя инструмент сравнения схем, VCS и немного процесса. –

+0

SQL Compare - отличный инструмент и может использоваться в вашей текущей системе для создания сценариев для обновления версии. У вас есть пробная версия, загрузите ее и проверьте ее между двумя БД, которые, по вашему мнению, имеют одну и ту же схему, если они одинаковы, я буду есть свою шляпу. – Hogan

3

Я делаю это very similarly, но использую расширенные свойства базы данных вместо таблицы для отслеживания версии метаданных, а этапы обновления определены в приложении, а не в одном скрипте. Большинство этапов обновления - это только execute script Upgrade.vX.Y.sql.

Я на самом деле найти свой подход, превосходящую Schema инструментов сравнения (и что включает в себя VS DB развертывания) по нескольким причинам:

  • Я не доверяю инструменты сравнения схемы изменения очень большие таблицы, я предпочитаю иметь испытания скрипт, специально разработанный для моей таблицы 150B записей.
  • Сравнение схем не относится к удалению устаревших объектов
  • Если схема приложения была изменена на клиентском сайте, инструмент сравнения вслепую попытается ее обновить, но модифицированной схеме может потребоваться специальная обработка: проверка изменений, оценка воздействия, выставление счетов за дополнительную работу.
1

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

Если вы хотите придерживаться этого, один из инструментов, который нам помог, это SSW SQL Deploy, который позволяет вам захватывать целую кучу скриптов (у нас есть папка «changes» для каждой версии, а в файлах есть метка «001_something.sql «через« 999_somethingelse.sql ») и выполнить их в целом по базе данных. Вы также можете включить это в свои приложения .NET через API, или вы можете запустить его из командной строки во время установки.

Самый высокий конец спектра - это принятие целого процесса управления изменениями базы данных, что-то вроде DB Ghost от Innovartis, что намного больше, чем просто набор инструментов. Но это потребует, чтобы вы и ваши разработчики приняли этот стиль тщательно, живите и дышите им. Очень интересно, но до сих пор мне не удалось убедить мой УБС и босс :-(Может быть, у вас есть больше удач

Смежные вопросы