Как развернуть мое приложение, если для этого требуется база данных с созданными таблицами?

Ранее я использовал базу данных в SQL Server CE. Это довольно просто, потому что я могу иметь базу данных в простом .sdf файл и разверните его с моим приложением (либо пустым, либо с уже добавленными данными).

Но что, если я хочу изменить базу данных на SQL Server Express?

Конечно, если у моего клиента уже есть база данных, которая мне нужна, мне не нужно ничего менять (ну, может быть, строка подключения).

Что мне делать, если я хочу доставить приложение клиенту, которому требуется локальная база данных SQL Server Express? Есть ли способ сделать это с файлами.mdf?

Конечно, у меня есть код SQL для создания всех таблиц с соответствующими внешними ключами и т. Д., Если это необходимо.

Я полагаю, с этим сталкиваются многие разработчики, но я не знаю, как это сделать.

Пожалуйста, не предлагайте использовать SQLite, MySQL или другую базу данных. Я задаю этот вопрос, потому что я хочу знать, как сделать это, в частности, на SQL Server.

2 ответа

Решение

Вы можете подключиться к SQL Express с прикрепленным файлом БД:

data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true

Также вы можете сделать резервную копию вашей базы данных и затем восстановить ее при развертывании.

ОБНОВЛЕНИЕ Но если вы не хотите копировать данные, только структуру, я предлагаю вам продолжить с SQL-скриптами. Вы можете проверить, существует ли БД, и создать ее, если ее нет. Вы даже можете инициировать некоторые таблицы с массовыми вставками.

if db_id('dbname') is null BEGIN CREATE DATABASE ... etc

В зависимости от типа вашего приложения вы можете указать свои сценарии для развертывания (AFAIK, VS2010 предлагает это для веб-приложений) или вызвать sql.exe с вашим сценарием в качестве входных данных в качестве шага развертывания.

Есть несколько вещей для размышления:

  1. Возможно, вам придется распространять сам SQL Express
  2. Разверните базу данных до новой настройки
  3. Перенос существующей базы данных в новую схему / версию

    Добавить 1. Длинный, но очень описательный документ об этой процедуре Официальные документы

    Добавьте 2. На MSDN

    Добавьте 3. Единственные два способа, которые я использовал для решения этой проблемы: 1: развернуть новую версию и перенести данные с помощью скрипта, и 2: создать скрипт, который преобразует текущую версию в новую версию.

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

Другие вопросы по тегам