Применить обновления (связанные с приложением) к базе данных
Поскольку я не делал этого раньше, я не уверен, что способ, которым я планирую это сделать, подходит или есть лучший способ. Например, использовать установщик Windows или Install Shield или набор инструментов XML установщика Windows (WiX). Любая помощь будет отличной, поскольку я понятия не имею.
У нас есть продукт, и мы отправляем новую версию каждые несколько месяцев. Пока что мы выпускаем только полные версии, т. Е. Либо версию 1.0, либо версию 1.5, но без обновления с 1.0 до 1.2 до 1.3 до.... вы получите картину, правильно! Таким образом, любой клиент, получивший версию 1.0, не может обновиться до версии 1.2 или 1.3 или даже до последней версии. Им придется удалить старую версию и установить последнюю версию. Это не правильно, но это то, что мы могли бы сделать до сих пор. Но мы бы хотели это изменить.
Я планирую иметь установочный файл с (Sql Scripts) для каждого пути обновления. Проверьте таблицу в базе данных, в которой хранится информация о версии, и в зависимости от нее запустите другой скрипт для обновления базы данных.
Меня беспокоит то, что этот метод не может быть масштабируемым, если у нас более 5 или 6 разных версий.
Если бы вы могли указать на какие-либо статьи или книги на эту тему, это тоже очень помогло бы.
Кроме того, мы могли бы использовать установщик Windows или Install Shield для этого?
спасибо, _UB
4 ответа
Ваша проблема довольно распространена, и мне приходилось сталкиваться с такой проблемой на моей последней работе. Помимо инструмента RedGate, есть еще один инструмент, который может помочь вам сделать то, что вам нужно. Это инструмент под названием DB Ghost. Они явно решают проблему управления версиями, а также имеют упаковщик. Я бы посоветовал провести пробную версию продукта DB Ghost, потому что у них есть несколько интересных претензий, касающихся нескольких обновлений версий. Это было взято из их FAQ ( http://www.innovartis.co.uk/faqs/faqs.aspx):
В: Наша проблема заключается в управлении изменениями структуры данных во время обновлений. Наша линейка продуктов упакована в термоусадочную пленку или загружается с веб-сайта. Поэтому, когда пользователь загружает обновление, он может выполнять обновление с самой последней версии, с небольшими изменениями структуры базы данных, или обновление может быть с очень старой версии с множеством структурных изменений. Одно обновление должно управлять всем этим. Пользователь будет вне сайта, поэтому мы не можем держать его за руку. У нас есть пользователи в Греции, Австралии, Малайзии, Норвегии и т. Д. Как будет DB Ghost обрабатывать обновления в удаленных местах?
О: Продукт DB Ghost Packager Plus был специально разработан для решения этой проблемы, поскольку он может динамически беспрепятственно обрабатывать требуемые обновления целевой базы данных.
Я просто упоминаю об этом, потому что наша компания пытается сделать что-то подобное, и я проводил исследования этого инструмента.
Спасибо эрик
Мы использовали DBGhost в течение года или около того, чтобы держать нашу базу данных под контролем исходного кода вместе с нашей кодовой базой, и это упрощает подобные вещи. Это не просто хорошо продумано, но они используют его, чтобы выкатить свой собственный код в течение многих лет, так что он абсолютно твердый.
В мире Rails они используют инструмент / метод под названием Migrations.
В основном это сводится к созданию небольшого сценария SQL для обновления и понижения каждого небольшого изменения в базе данных.
Когда вы тестируете приложение, вы переносите базу данных в нужную вам версию, и при развертывании приложение может проверить, какая версия ему требуется, и перейти на эту версию.
Существуют бесплатные наборы инструментов миграции для большинства популярных языков, хотя они могут быть частью некоторой инфраструктуры MVC.
Приятным побочным эффектом миграции является то, что у вас есть исходный код базы данных, который легко хранится в вашем хранилище контроля версий.
Вы настаиваете на том, чтобы сделать это самостоятельно, или вы могли бы видеть, что вы вкладываете средства в инструмент?
Мне очень нравится идея SQL Packager от Red-Gate, которая будет "отличать" две ваши версии базы данных, а затем создаст сценарий SQL, проект C# или отдельный исполняемый файл для обновления с версии 1 до версии 2.
Не 100%, как вы могли бы перейти с 1.0, 1.1, 1.2, 1.3 на все 2.0 - проверьте их веб-сайт и посмотрите, предлагают ли они что-то для этого сценария!
В противном случае, я думаю, что это будет довольно тернистым и грязным......
Марк