web-dev-qa-db-fra.com

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

J'ai créé un nouveau projet ASP.NET MVC 5 dans Visual Studio 2013 (Express for 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?

32
doncadavona

Je l'ai!

Sur la base de la réponse de @ warheat1990, il vous suffit de modifier la chaîne de connexion. Mais la réponse de @ warheat1990 a un peu trop changé. Alors voici ma chaîne de connexion originale (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"/>

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 réflexions ont été d'identifier et d'utiliser la fonctionnalité fournie par VS, le cas échéant. Parce que Microsoft n’a pas de documentation concise sur la façon de procéder.

19
doncadavona

Malgré le fait que cette question soit ancienne, la réponse ne m’a pas aidé; je veux donc partager comment je l’ai résolue pour moi-même.

Dans l'Explorateur de serveurs, recherchez votre base de données ASPNet. Puis ouvrez-le à l'aide de l'explorateur d'objets SQL Server.

 enter image description here

Ensuite, cliquez sur l'option Schema Compare

 Compare Schemas

Ensuite, dans la fenêtre Comparaison de schéma pour la base de données cible, sélectionnez la base de données SQL Server à laquelle vous souhaitez que la base de données ASPNet s'intègre. Puis cliquez sur le bouton Comparer

 Set Options

Désélectionnez toutes les actions de suppression pour la base de données cible et laissez sélectionnées toutes les actions Ajouter pour la base de données ASPNet, puis cliquez sur le bouton Mettre à jour.

 Update

Enfin, mettez à jour votre chaîne de connexion afin qu’elle pointe vers votre base de données SQL Server.

38
Overlord

Changer le connectionString 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 base de données connectionString, par exemple:

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

Il semble que vous souhaitiez déplacer les données de votre base de données locale vers le serveur SQL. Si tel est le cas, la méthode la plus simple consiste à sauvegarder votre base de données locale, puis à la restaurer sur le serveur. 

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

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

MODIFIER:

Si vous devez installer une instance de SQL Server: https://msdn.Microsoft.com/en-us/library/ms143219.aspx

3
Brennan Pope

J'ai eu le même problème et juste résolu ceci ... donc le point principal est la chaîne de connexion par défaut ... que vous devez modifier correctement sinon il est inutile..et impossible de se connecter correctement. Copiez donc tout le contenu de votre table d'utilisateurs dans la base de données en ligne (ils doivent avoir le même aspect que dans votre base de données locale) . Vous pouvez comparer le schéma (la base de données locale) à la base de données réelle. Il est bien expliqué par "Overlord" -> Explication

Mais après, modifions maintenant correctement la 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" />

nom_serveur - devrait être votre serveur . numéro_port - devrait être votre port de serveur 

Il m'a fallu des années pour enfin que tout fonctionne correctement ... mais cette petite astuce avec une chaîne par défaut vient de le faire! Houblon, cela aide 

0

En ce qui concerne la réponse de OverLords, cela a parfaitement fonctionné pour moi, merci!

Si quelqu'un se débat avec l'utilisation de la chaîne de connexion: 

    <add name="CONNECTIONSTRINGNAME" connectionString='data source= DATABASE SOURCE initial catalog=&quot;DATABASE NAME &quot;;user id=&quot;USERID&quot;;password=PASSWORD;MultipleActiveResultSets=True;' providerName="System.Data.SqlClient" />
0
JackB

J'ai eu un problème similaire, je voulais exporter depuis une base de données locale vers un serveur de base de données distant et j'ai rencontré un message d'erreur pour lequel je ne trouvais aucune information, mais la réponse m'est venue à la lecture de cet article. Je vous 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'utilisateurs individuels. VS crée facilement une base de données (fichier mdf sous App_Data) et une chaîne de connexion dans le fichier web.config.

Dans toute ma sagesse, j'ai pensé: "Pourquoi ne pas déplacer ceci sur un serveur distant?" Alors j'ai fait. 

J'ai restauré le fichier mdf sur le serveur distant, développé des tables simples pour mon site Web, créé une nouvelle connexion à la base de données et ajouté un nouveau fichier ado.net edmx, supprimé le "DefaultConnection" dans le fichier web.config et mis à jour la référence à ma nouvelle connexion dans ApplicationDBContext.

Jeu pressé, et ... pas de sigar (lorsque vous essayez de vous connecter).

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

Il s'avère que IdentityDbContex préfère le "DefaultConnection" avec le providerName = "System.Data.SqlClient" de sorte que l'ajout d'un nouveau fichier edmx avec le providerName = "System.Data.EntityClient" n'est pas une bonne chose. 

Solution: comme suggéré par warheat1990, j'ai mis à jour (remis) les connexions DefaultConnections et sa valeur de chaîne de connexion.

On pourrait penser que je devrais avoir deux bases de données distinctes (une pour les utilisateurs) et une pour les affaires, mais c'est une autre discussion.

0
hormberg