2010-09-13 5 views
2

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

Я скорее ограничен окружной средой windows/.net/sql, так как многие наши клиенты будут самостоятельно размещать приложение, которое я создаю на своих веб-серверах, а дополнительные биты, установленные на их серверах, никогда не идут хорошо и в результате всегда возникает ряд жалоб/потерянных дел. Так что sqlalchemy отсутствует, поскольку он работает в python.

Что мне нужно - это инструмент, который позволит мне легко мигрировать между версиями приложения. Я нашел migrator.net, и я использовал его раньше, но никогда в производстве, поскольку команда разработчиков работает только с ней ежегодно, а не только с активным проектом.

Какие альтернативы подходят?

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

ответ

1

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

CREATE TABLE SETTINGS(KEY VARCHAR(255), VALUE VARCHAR(255)); 
INSERT INTO SETTINGS VALUES('version', '1'); 

При запуске приложения, запросить эту таблицу (если он не существует, то не была установлена ​​предыдущая версия), и проверьте версию. Я бы поддерживал только отдельные сценарии обновления для версии 1 до версии 2; версия 2 - 3; 3 до 4 и так далее. Я не буду поддерживать сценарий обновления для версии от 1 до 3 или около того напрямую, обычно это не требуется. Скрипты обновления обычно содержат инструкции ALTER TABLE и CREATE TABLE, но иногда также UPDATE.

2

Если вы используете Visual Studio 2010 Ultimate/Premium Edition или Visual Studio Team/Database Edition 2008, вы найдете все, что вам нужно в Visual Studio.

Вы можете сравнить две базы данных (например, dev и prod) и сгенерировать SQL Script для изменения данных. Вы можете легко исключить из сравнения некоторые таблицы или некоторые столбцы. Вы также можете просмотреть результаты и исключить некоторые записи из генерации сценария. Таким образом, можно легко и гибко генерировать скрипты, которые могут использоваться для развертывания изменений в базе данных. Вы можете separetely сравнить данные из двух баз данных от () Оценка:). Просто зайдите в меню «Данные» и выберите «Сравнение схем» или «Сравнить данные». Вы можете прочитать http://msdn.microsoft.com/en-us/library/dd193250.aspx и http://msdn.microsoft.com/en-us/library/dd193261.aspx, чтобы понять, как это работает. Таким образом, вы можете обновлять данные в dev с данными из prod или генерировать скрипты, которые изменяют базу данных prod до последней версии базы данных dev.

Я начал использовать эту функцию с Vinsual Studio Team Edition 2008 и продолжаю использовать ее Visual Studio 2010 Ultimate. Это именно то, что мне нужно. В некоторых случаях мне нужно немного модифицировать скрипты, но 95% работы делают Visual Studio.

Если вы не можете использовать VS2010 Ultimate или Premium и VS2008 Team или Database Editions, я бы рекомендовал посмотреть некоторые продукты http://www.red-gate.com/ (например, http://www.red-gate.com/products/SQL_Compare/index.htm) с близкими функциями.

2

Red_Gate SQl Compare подходит для синхронизации двух баз данных.

Тем не менее, я думаю, что сентиментальная вещь - сохранить ваши изменения в Source Control под определенной версией. Относитесь к своему SQL-коду так же, как и любой другой код, принадлежащий версии. Никогда не позволяйте своим разработчикам вносить изменения с помощью GUI. Все изменения должны быть написаны сценарием и помещены в исходное управление как часть версии. Когда вы это сделаете, если кто-то находится в версии 1, и вы хотите обновить их до версии2.3, вам просто нужно запустить сценарии для каждой версии по порядку, и у вас будет база данных в версии 2.3.

+0

Я согласен с этим - становится более важным сохранять изменения в дельтах во что-то легко управляемое исходным кодом управляемое. Ruby On Rails (и другие настройки) следуют рекомендациям по обработке «миграций» между разрывной совместимостью; еще раз, они написаны в очень специфических точках жизненного цикла. –

0

Про версия SQL Compare имеет командную строку, которая может использоваться для непрерывной интеграции. Это задокументировано здесь: http://downloads.red-gate.com/HelpPDF/ContinuousIntegrationForDatabasesUsingRedGateSQLTools.pdf

В идеале вы бы сохранили свою схему в исходном управлении, чтобы получить максимальную отдачу от этого, что вы можете сделать, используя SQL Source Control.

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

Если этого не достичь, что вы ищете, прокомментируйте этот ответ.

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

  • Нет связанных вопросов^_^