Как перенести ASP.NET база данных MVC из LocalDb в SQL Server?

Я создал новый ASP.NET проект MVC 5 в Visual Studio 2013 (Express for Web) и по умолчанию проект использует LocalDb в качестве базы данных,но как перенести или перенести базу данных на SQL Server?

Я хочу использовать SQL Server для базы данных вместо LocalDb. Но как?

7 ответов


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

в Обозревателе серверов найдите свою БД ASPNet. Затем откройте его с помощью обозревателя объектов SQL Server.

enter image description here

затем ударил Сравнение Схем опции

Compare Schemas

затем в окне сравнение схем для целевой базы данных выберите базу данных SQL Server вы хотите, чтобы БД ASPNet интегрировалась. Затем нажмите кнопку Сравнить

Set Options

отмените выбор всех действий удаления для целевой базы данных и оставьте выбранными все действия добавления для БД ASPNet, затем нажмите кнопку Обновить.

Update

наконец, обновите строку подключения, чтобы она указывала на вашу SQL Server DB


понял!

основываясь на ответе @warheat1990, вам просто нужно изменить строку подключения. Но ответ @warheat1990 имел слишком много изменений. Итак, вот моя исходная строка подключения (LocalDb):

<add name="DefaultConnection"
     connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-my_project-20150318100658.mdf;Initial Catalog=my_project-20150318100658;Integrated Security=True"
     providerName="System.Data.SqlClient"/>

чтобы подключить его к SQL Server вместо LocalDB, я изменил строку подключения на:

<add name="DefaultConnection"
     connectionString="Data Source=SERVERNAME\SQLEXPRESS;Initial Catalog=my_project;Integrated Security=True"
     providerName="System.Data.SqlClient"/>

спасибо @warheat1990 за идею просто изменить Интернет.конфиг. Мои первые мысли были определить и использовать функцию это VS поставляет, если есть. Потому что у Microsoft нет краткой документации о том, как это сделать.


изменить свойство connectionString в web.config

  <connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-KlikRX-20141203034323.mdf;Initial Catalog=aspnet-Test-20141203034323;Integrated Security=True" providerName="System.Data.SqlClient" />
  </connectionStrings>

к вашей собственной базе данных connectionString, например:

  <connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=7.7.7.7\sql;Initial Catalog=TestDB;User ID=sa;Password=sa" />
  </connectionStrings>

похоже, что вы можете переместить данные из локальной базы данных в sql server. Если это так, самый простой способ сделать это-создать резервную копию локальной базы данных, а затем восстановить ее на сервере.

резервное копирование: https://msdn.microsoft.com/en-us/library/ms187510.aspx#SSMSProcedure

восстановить: https://msdn.microsoft.com/en-us/library/ms177429.aspx

EDIT:

Если вам нужно установить экземпляр SQL-сервер: https://msdn.microsoft.com/en-us/library/ms143219.aspx


у меня была та же проблема, и я просто решил это...поэтому основной момент-строка подключения по умолчанию...который вам нужно правильно изменить, иначе это бессмысленно..и невозможно правильно подключиться. Так скопируйте все, что вам aspnetroles...таблица пользователей в онлайн-базе данных (они должны выглядеть так же, как в вашей локальной базе данных). Вы можете сравнить схему (локальную БД) с реальной БД. Это хорошо объясняет "Оверлорд" -> объяснение

но после позволяет корректно изменять класс defaultconnection строку Это моя строка по умолчанию перед модификацией:

 <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\aspnet-track_spa-20180502025513.mdf;Initial Catalog=aspnet-track_spa-20180502025513;Integrated Security=True" providerName="System.Data.SqlClient" />

Это моя измененная строка по умолчанию после модификации:

<add name="DefaultConnection" connectionString="Data Source=servername,portnumber;Initial Catalog=AttendanceTrak;Integrated Security=False;User Id=****;Password=*****;Encrypt=True;TrustServerCertificate=False;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />

servername-должен быть вашим сервером. portnumber-должен быть вашим портом сервера

мне потребовались века, чтобы, наконец, заставить его работать должным образом...но этот маленький трюк со строкой по умолчанию просто сделал это! Хмель это помогает


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

Я настроил решение с отдельными учетными записями пользователей. VS удобно создает db (mdf-файл под App_Data) и connectionstring в интернете.конфиг.

я восстановил файл mdf на удаленном сервере, расширил его с помощью простых таблиц для моего веб-сайта, создал новое соединение с БД и добавил новый ado.net edmx-файл, удалил "DefaultConnection" в интернете.сконфигурируйте и обновите ссылку на мое новое соединение в ApplicationDBContext.

нажал play, и... нет сигара (при попытке входа в систему).

The entity type IdentityUserLogin is not part of the model for the current context.

оказывается, IdentityDbContex предпочитает "DefaultConnection"с системой providerName=".Данные.SqlClient", поэтому добавление нового edmx-файла с именем providerName="System.Данные.Entityclient создан" ничего хорошего.

решение: как предложил warheat1990, я обновил (вернул) DefaultConnections и это значение connectionstring.

можно утверждать, что у меня должно быть два отдельных db (один для пользователей) и один для бизнеса, но это другое обсуждение.


вы не можете создать резервную копию LocalDB. Там нет интерфейса SSMS для резервного копирования. Вам нужно будет сделать копию MDF-файла localDB и прикрепить его к SQL Server Express (или выше). Затем вы можете либо переместить файлы, либо выполнить резервное копирование-восстановление.