Как обрабатывать обновления базы данных - PullRequest
2 голосов
/ 21 марта 2011

Каков наилучший способ обновления базы данных?

В настоящее время мы запускаем скрипт обновления, который выполняет такие вещи, как: Если столбец не существует, то добавить столбец.

Есть ли лучший способ? Этот скрипт гигант?

Этот вопрос относится к Microsoft и SQL Server 2005/2008

Ответы [ 6 ]

3 голосов
/ 21 марта 2011

Если это развернуто во многих разных местах, то у вас есть именно то, как это сделать.Или вы можете использовать что-то вроде Red Gate SQL Packager

Если это вопрос о том, как выполнить развертывание в нескольких местах, например, перейти от подготовки к производству, тогда используйте Red Gate SQL Compare и / или SQL Data Compare продуктов.

К вашему сведению - я не работаю для Red Gate;Мне просто очень нравятся их вещи.

Я пытался использовать инструменты Microsoft для сравнения схем и данных.Инструмент данных работает просто отлично;инструмент схемы слишком сложный и его трудно заставить работать правильно.Честно говоря, я видел, как инструмент MS-схемы испортил достаточно обновлений, и я больше ему не доверяю.

Одним из многих недостатков инструмента MS является то, что по умолчанию он хочет обновлять такие вещи, как физическое расположение файлов на сервере.Это создает проблемы, когда у вас есть несколько копий базы данных на одном сервере.Я не думаю, что они продумали разработку этого инструмента очень хорошо.С пользовательским интерфейсом также сложно работать.

1 голос
/ 22 марта 2011

Как уже упоминалось, SQL Gate от Red Gate, скорее всего, удовлетворит ваши потребности.Однако, если вы ищете функцию «миграции», аналогичную активной миграции Ruby, вам придется подождать немного дольше, чтобы включить ее.Если бы вы могли заполнить следующий опрос, это поможет нам разработать эту функцию: http://www.surveymk.com/s/migrations

Спасибо за вашу помощь!

1 голос
/ 21 марта 2011

Использование скрипта обновления / понижения - хороший способ.Особенность NYSystemsAnalyst говорит о том, что звучит интересно.Однако вам могут потребоваться некоторые конкретные действия для преобразования существующих данных.

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

В Ruby on Rails такой механизм встроен с помощью " migrations ".Вы должны предоставить сценарий изменения для обоих направлений, обновления и понижения.Затем инструмент автоматически проверяет текущую версию схемы базы данных и выполняет необходимые сценарии изменений.Я думаю, что подобные системы должны быть доступны для .NET или среды, которую вы используете.

1 голос
/ 21 марта 2011

Вы также можете попробовать RedGate SQL Compare . Этот инструмент сравнит две схемы и создаст скрипт для обновления и сделает их одинаковыми.

0 голосов
/ 21 марта 2011

Я написал серию блогов по методам управления версиями баз данных, которые я использую - которые могут быть вам полезны, например, автоматическое обновление таблицы версий при каждом развертывании, использование контрольных сумм для проверки «неавторизованных» изменений, автоматическая регистрация изменений. Подробнее см. http://michaelbaylon.wordpress.com/category/database-versioning/.

0 голосов
/ 21 марта 2011

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

Недавно я использовал проекты баз данных, которые являются частью Visual Studio 2010. Если у вас есть VS, посмотрите.Вы можете сохранить «текущую» версию базы данных в VS, после чего она проанализирует целевую базу данных и сгенерирует необходимый скрипт изменения.Это не идеально, и есть некоторые шаги, которые необходимо предпринять, чтобы сохранить текущие данные, но это может стоить посмотреть.

...