Управление изменениями базы данных при исправлении/обновлении/обновлении программного обеспечения

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

Вопрос

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

Ситуация:

  • Я развертываю выпуск приложения WPF для пользователя.Приложение использует файл данных MSSQL для хранения данных приложения (развертывание с клиентским профилем и SQLServer Compact 3.5 Пререквизиты)
  • В дальнейших изменениях схемы базы данных разработки я тоже добавляю дополнительные данные
  • Я пытаюсь запустить обновление патча/минор/крупное обновление с издательством Visual Studio 2008 и MSI

Я хочу обновить приложение пользователя и файл базы данных, но не трогать данные, хранящиеся в этой базе данных.Кажется простым, но я не могу найти в Интернете, как это сделать с помощью публикации Visual Studio.

На данный момент я собрал 2 варианта:

  • Создайте скрипт обновления SQL для каждого выпуска и попробуйте обновить базу данных при запуске 1 -й программы после исправления.
  • Создайте проект по настройке базы данных и попробуйте сценарий оттуда (понятия не имею, как это сделать).

Я был бы рад услышать, что некоторые из вас используют или использовали бы в таком случае.Несколько ссылок на примеры/подробное объяснение того, как это сделать, было бы здорово.Я не очень хорошо разбираюсь в этом развертывании/базе данных... пока... :)

Заранее спасибо.

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

Решение

Эта статья о "Миграция базы данных в стиле Rails в .Net"может быть полезно.С момента появления Rails было проведено много работы над лучшими практиками миграции баз данных, которые можно использовать на других языках и платформах.

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

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

Мы собираем все сценарии изменений sql (которые могут создавать/изменять таблицы, хранимые процедуры, а также мигрировать данные и т. д.) в проект C# и развертывать их одновременно с остальным программным обеспечением.

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

Мы запускаем этот сценарий MSBuild для локальных сборок и для развертывания.Он проверяет номер версии в базе данных и запускает все сценарии с более высоким номером.

Мне не очень нравится MSBuild, но он выполняет свою работу.

У Мартина Фаулера есть статья о эволюционный дизайн базы данных который имеет некоторую предысторию по этому поводу.

Если вы используете студию управления SQL Server для внесения изменений, вы можете использовать «Создать сценарий изменения», чтобы позволить ему внести изменения за вас.

Если вы добавите класс Installer в свою DLL или EXE, его метод Install будет вызван во время установки (более подробную информацию можно найти в нашем MSDN, VS может создать для вас мини-проект установки, а затем вы можете просто скопировать скелет и атрибуты).Затем вы можете запускать команды SQL для CE и создавать резервные копии существующих файлов CE и даже выполнять откат, если что-то пойдет не так (класс установщика имеет методы для выполнения полных транснациональных шагов на уровне всей установки - штука с умом :-)

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