Инструмент или рекомендации по установке базы данных с клиентским приложением - PullRequest
3 голосов
/ 24 сентября 2010

Я предложил 2 способа установки локальной базы данных с моим приложением WPF:

  1. Создайте резервную копию БД, затем восстановите ее в установщике с помощью SMO
  2. Сценарийустановить базу данных и выполнить ее через ADO или osql.exe

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

Существуют ли другие способычто более гибкое?Есть ли лучше / проще управлять инструментами?

Ответы [ 3 ]

1 голос
/ 24 сентября 2010

Методы, которые я видел, поддерживающие инкрементные обновления, - все это что-то вроде поддержания набора «сценариев изменений». Для первоначальной установки вы можете восстановить известную «чистую» резервную копию в новую БД или использовать сценарий SQL или инструмент ORM для проецирования схемы в DMBS. NHibernate имеет возможность генерировать схему с учетом конфигурации сопоставления, и вы можете настроить это поведение из установщика.

После того, как БД установлена, вы должны обновляться постепенно. Как правило, это означает создание сценария для каждого изменения в БД и включение его в установочный пакет с «бегунком» (простой пакетный процесс), который будет прокручивать сценарии и выполнять их для БД. Если они зависят от порядка, убедитесь, что ваша файловая структура учитывает это (но обычно лучше объединить два сценария, когда один должен быть выполнен первым). Также убедитесь, что изменение не является «разрушительным»; например, добавление столбца в таблицу не может включать удаление и повторное создание таблицы, даже если в ней будет меньше кода. Изменение также должно быть повторяемым или неповторяющимся, поскольку вам, вероятно, придется включать один и тот же сценарий дважды. Это может означать отслеживание имен выполненных вами сценариев и / или то, что каждый сценарий обнаруживает, что внесенные в него изменения еще не были внесены до его выполнения.

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

Наконец, убедитесь, что все подключения к обновляемой БД закрыты или сброшены, прежде чем выполнять обновления, чтобы избежать непредсказуемого поведения.

1 голос
/ 24 сентября 2010

Для первоначальной установки выполните восстановление базы данных. Всегда отправляйте текущую версию БД с приложением.

Для обновления необходимо составить список сценариев изменений, по одному для каждой новой версии. Мне нравится подход RoR, где БД включает версию.

Это позволяет просто проверить, в какой версии находится БД, и применить все сценарии изменений после нее.

1 голос
/ 24 сентября 2010

Вы смотрели на Sql Server Compact 3.5 SP1?Установка - это просто вопрос копирования файлов базы данных и ссылки на сборки в вашем проекте.

http://www.microsoft.com/sqlserver/2008/en/us/compact.aspx

Что вы имеете в виду именно под путем обновления?Будущие новые версии того же приложения и базы данных?

...