Comment transférer ASP.NET base de données MVC de LocalDb à SQL Server?

j'ai créé un nouveau ASP.NET projet MVC 5 Dans Visual Studio 2013 (Express pour Web) et par défaut, le projet utilise LocalDb comme base de données, mais comment transférer ou migrer la base de données vers SQL Server?

je veux utiliser SQL Server pour la base de données au lieu de LocalDb. Mais comment?

28
demandé sur doncadavona 2015-03-18 05:34:30

7 réponses

nonobstant cette question Est vieille, la réponse ne m'a pas aidé donc je veux partager comment je l'ai résolu pour moi-même.

sur L'Explorateur de serveur, Trouvez votre ASPNET DB. Puis ouvrez-le en utilisant SQL Server Object Explorer.

enter image description here

puis allez et frappez Schéma Comparer option

Compare Schemas

puis dans la fenêtre de comparaison du schéma pour la base de données cible, sélectionnez le SQL Base de données du serveur à laquelle vous voulez que la base de données ASPNet s'intègre. Ensuite frappé le bouton Comparer

Set Options

désélectionner toutes les actions Supprimer pour la base de données cible, et laisser sélectionné toutes les actions Ajouter pour la base de données ASPNet, puis appuyer sur le bouton de mise à jour.

Update

enfin, mettez à jour votre chaîne de connexion pour qu'elle pointe vers votre serveur SQL DB

34
répondu Overlord 2016-11-01 03:55:16

je l'Ai!

<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"/>

pour le connecter à SQL Server au lieu de LocalDB, j'ai modifié la chaîne de connexion en:

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

merci à @warheat1990 pour l'idée de simplement changer le Web.config. Mes premières pensées ont été pour identifier et utiliser la fonction ce VS fournit, s'il y en a un. Parce que Microsoft N'a pas une documentation concise sur la façon de le faire.

19
répondu doncadavona 2015-12-01 02:22:00

changez la connexion dans votre 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>

à votre propre connexion de base de données, par exemple:

  <connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=7.7.7.7\sql;Initial Catalog=TestDB;User ID=sa;Password=sa" />
  </connectionStrings>
6
répondu warheat1990 2015-03-18 03:11:16

il semble que vous souhaitiez peut-être déplacer les données de votre base de données locale vers le serveur sql. Si donc, la meilleure façon de le faire serait de sauvegarder votre base de données locale et de la restaurer sur le serveur.

Pour sauvegarder: https://msdn.microsoft.com/en-us/library/ms187510.aspx#SSMSProcedure

restaurer: https://msdn.microsoft.com/en-us/library/ms177429.aspx

EDIT:

Si vous avez besoin d'installer une instance de SQL Server: https://msdn.microsoft.com/en-us/library/ms143219.aspx

3
répondu Brennan Pope 2015-03-18 06:10:39

j'ai eu le même problème et je viens de le résoudre...donc le point principal est la chaîne de connexion par défaut...que vous devez modifier correctement sinon cela ne sert à rien..et impossible de se connecter correctement. Copiez tous les aspnetrolles...les utilisateurs de la table à la base de données en ligne (ils devraient ressembler à la même chose que dans votre base de données locale). Vous pouvez comparer schema (Local db) avec Real db. Il est très bien expliqué par "Overlord" -> Explication

Mais après permet maintenant de modifier correctement chaîne defaultconnection C'est ma chaîne par défaut avant modification:

 <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" />

C'est ma chaîne par défaut modifiée après modification:

<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-doit être votre serveur. portnumber - doit être votre port serveur

il m'a fallu des années pour le faire fonctionner correctement...mais cette petite astuce avec la chaîne de caractères par défaut vient de le faire! Houblon cela aide

0
répondu Jevgenij Kononov 2018-05-03 11:08:01

j'ai eu un problème similaire, voulant exporter à partir d'un db local vers db-server distant et j'ai rencontré un message d'erreur sur lequel je n'ai pu trouver aucune information, mais la réponse m'est venue en lisant ce post, donc je soumets ma réponse ici au cas où quelqu'un d'autre aurait le même problème.

j'ai mis en place une solution avec des comptes D'utilisateur individuels. VS crée commodément un db (mdf-file sous App_Data) et une chaîne de connexion dans le web.config.

dans toute ma sagesse j'ai pensé: "pourquoi ne pas déplacer cela sur un serveur distant?"Je l'ai fait.

j'ai restauré le fichier mdf sur le serveur distant, Je l'ai étendu avec quelques tables simples pour mon site web, j'ai créé une nouvelle connexion à la base de données et j'ai ajouté une nouvelle ado.net edmx-file, a supprimé la "DefaultConnection" dans le web.config et mis à jour la référence à ma nouvelle connexion dans le contexte Applicationdb.

appuyé sur play,et... no sigar (en essayant de se connecter).

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

Il S'avère que le IdentityDbContex préfère la "DefaultConnection"avec le système providerName=".Données.SqlClient " ajoute donc un nouveau fichier edmx avec le système providerName=".Données.EntityClient" n'est pas bon.

Solution: comme warheat1990 l'a suggéré, j'ai mis à jour (repasser) les DefaultConnections et c'est la valeur de la chaîne de connexion.

on pourrait argumenter que je devrais avoir deux db séparées (une pour les utilisateurs) et une pour les affaires, mais c'est une autre discussion.

0
répondu hormberg 2018-09-06 07:53:28

vous ne pouvez pas vous soutenir LocalDB comme ça. Il n'y a pas d'interface SSMS pour faire une sauvegarde. Vous devrez faire une copie du fichier MDF de localDB et la joindre à SQL Server Express (ou supérieur). Ensuite, vous pouvez déplacer les fichiers ou faire une sauvegarde-restauration.

-4
répondu Umar AlFarooq 2015-10-20 22:10:09