Comment se connecter à LocalDB dans Visual Studio Server Explorer?

240

Je ne peux pas croire que je n'ai pas trouvé de solution de travail à cela après une heure de recherche. Je suis en train de suivre cet article sur Entity Framework 6.0 qui donne une procédure simple sur Code First. J'ai créé le projet et installé le dernier package EF Nuget pour le projet à compiler. J'ai également vérifié que Microsoft SQL Server 2012 Express LocalDB est installé avec Visual Studio 2013. Je n'ai aucune autre instance de SQL installée sur mon ordinateur local. Le programme s'exécute et les entrées sont ajoutées à la base de données et sorties dans la console. Mais quand l'article dit "vérifiez votre localdb", il ne dit pas comment! Je ne vois aucun fichier '.mdf' ou '.ldf' créé sous le dossier du projet. J'ai essayé toutes les façons de connecter Visual Studio ' s Explorateur de serveurs vers LocalDB. L'assistant ne peut pas localiser(localdb)ou ne trouve aucun fournisseur dans l'Explorateur de serveurs pour accepter la chaîne de connexion comme (localdb)\v11.0;Integrated Security=true;j'ai vu cela demandé à plusieurs endroits dans StackOverflow mais aucune réponse ne fonctionne ou marquée comme réponse. S'il vous plaît, aidez, cela ne doit pas être aussi frustrant!

Quelles sont les étapes pour connecter Visual Studio Server Explorer à LocalDB?

orad
la source
70
Je plains souvent les gens qui viennent d'entrer dans cette entreprise. Il y a 20 ans, les outils étaient en fait beaucoup plus faciles à utiliser. La documentation est désormais à peine suffisante et, dans la plupart des cas, inférieure à. Je vois "documentation" maintenant sur MSDN qui explique simplement une méthode, comme "foo" -> "Ceci est la méthode foo." Vraiment, Microsoft? Qu'est-il arrivé aux rédacteurs techniques? Qu'est-il arrivé à Books Online (pour de vrai)?
Pittsburgh DBA le
1
Assurez-vous que vous exécutez Visual Studio en tant qu'administrateur.
Darren Griffith
4
Si vous êtes d'accord avec l'utilisation de l' Explorateur d'objets SQL Server de Visual Studio au lieu de l' Explorateur de serveurs . C'est une solution plus simple (moins de configuration manuelle), consultez ma réponse: stackoverflow.com/a/41906391/3645638
Svek
Ma configuration crée la base de données dans sqlserverexpress plutôt que dans localdb. Qu'est-ce qui cause cela?
Jason Cheng

Réponses:

282

Dans Visual Studio 2012, je n'avais qu'à entrer:

(localdb)\v11.0

Visual Studio 2015 et Visual Studio 2017 sont passés à:

(localdb)\MSSQLLocalDB

comme nom de serveur lors de l'ajout d'une Microsoft SQL Server Datasource dans:

View/Server Explorer/(Right click) Data Connections/Add Connection

puis les noms de la base de données ont été remplis. Je n'avais pas besoin de faire toutes les autres étapes de la réponse acceptée, bien que ce serait bien si le nom du serveur était disponible automatiquement dans la zone de liste déroulante Nom du serveur.

Vous pouvez également parcourir les noms de base de données LocalDB disponibles sur votre ordinateur en utilisant:

View/SQL Server Object Explorer.
RationalDev aime GoFundMonica
la source
4
Ouais, c'est ce qui est censé fonctionner la première fois. Si ce n'est pas le cas, les étapes de la réponse acceptée doivent démarrer le service et le faire fonctionner.
ORAD
Peut-être que SQL Server Object Explorer l'a démarré pour moi pendant que je l'utilisais pour savoir quel nom de serveur Entity Framework avait utilisé. J'avais trouvé cette question, mais j'avais un peu peur d'essayer la réponse car j'espérais quelque chose de plus simple et je ne l'avais pas entièrement lu car je pensais que je devais utiliser le nom du tuyau :)
RationalDev aime GoFundMonica
Suis-je simplement aveugle aux détails, ou est-ce extrêmement frustrant que la configuration ne soit pas plus intuitive? Que ce soit en 2012 ou 2015, il semble qu'ils cachent presque des trucs comme ça dans l'IDE.
Rex_C
Merci. Je me creusais la cervelle jusqu'à ce que tu trouves ta réponse.
Alexandre N.
5
Pourquoi Microsoft, pourquoi? Pourquoi changer le nom et ne pas mettre à jour votre documentation? (Merci pour le chemin VS 2015)
Thibault D.
256

OK, répondant à ma propre question.

Étapes pour connecter LocalDB à Visual Studio Server Explorer

  1. Ouvrir l'invite de commande
  2. Courir SqlLocalDB.exe start v11.0
  3. Courir SqlLocalDB.exe info v11.0
  4. Copiez le nom du canal d'instance qui commence par np: \ ...
  5. Dans Visual Studio, sélectionnez OUTILS> Se connecter à la base de données ...
  6. Pour le nom du serveur, entrez (localdb)\v11.0. Si cela ne fonctionne pas, utilisez le nom du canal d'instance que vous avez copié précédemment. Vous pouvez également l'utiliser pour vous connecter à SQL Management Studio.
  7. Sélectionnez la base de données dans la liste déroulante suivante
  8. Cliquez sur OK

entrez la description de l'image ici

orad
la source
86
Presque chaque action de nos jours sur la plate-forme MS implique de la magie ou des connaissances mémorisées antérieures .... qui soutiendra ces choses dans 5 ans quand un tout nouvel ensemble de magie sera en place?
tbone
34
Je vous remercie! Juste pour ajouter à cette excellente réponse (et excellente question): SqlLocalDb infolistera tous les noms de serveurs. Dans mon cas, après la magie du code EF en premier, ma base de données a fini par MSSQLLocalDBne pas v11.0, donc je suis entré (localdb)\MSSQLLocalDBdans la boîte de dialogue Ajouter une connexion.
biscuit314
1
SqlLocalDb.exe apparaît deux fois dans mon chemin d'accès système - d'abord dans C: \ Program Files \ Microsoft SQL Server \ 110 \ Tools \ Binn, puis dans C: \ Program Files \ Microsoft SQL Server \ 120 \ Tools \ Binn. Par conséquent, seule la version antérieure sera appelée! J'ai installé VS2012 et VS 2013.
John Pankowicz
2
Je crois que de plus en plus de gens se tournent vers d'autres langages de programmation de Microsoft. Ces trucs simples de configuration et d'emplacement de fichiers sont devenus plus difficiles que tout ce qui manque aux autres langues. S'ils manquent du tout.
JustJohn
4
Je me suis gratté la tête tout l'après-midi à ce sujet. Pourquoi doivent-ils le rendre si compliqué, alors que c'était si facile et sanglant? Merci pour l'aide.
George Williams
71

Sélectionnez dans:

  1. La source de données: Microsoft SQL Server (SqlClient)
  2. Nom du serveur: (localdb)\MSSQLLocalDB
  3. Connectez-vous au serveur: Use Windows Authentication

Appuyez sur le bouton Actualiser pour obtenir le nom de la base de données :)

Capture d'écran

Kaps
la source
1
c'était en quelque sorte la seule réponse qui fonctionnait le 28/04/2015
maazza
4
même ici vs2015 .. Ce fut la réponse .. Je suppose qu'ils ont renommé localDb?
punkouter
1
Celui-ci l'a fait pour VS2015 RC sur Win 8.1.
ScottG
À propos du nom du serveur: stackoverflow.com/questions/27197359/…
kr85
Fonctionne également avec vs2017.
Toke Breer-Mortensen
25

Utilisez plutôt SQL Server Object Explorer (SSOX)

Contrairement aux autres réponses, cette approche utilise:
- Aucune commande spéciale.
- Pas de configurations compliquées.
Utilisez simplement l' Explorateur d'objets SQL Server

C'est assez simple ...

  • Dans le menu Affichage , ouvrez l' Explorateur d'objets SQL Server .

une

  • Clic droit sur la {YourTableName}table> View Designer

deux

Terminé.

Svek
la source
16

Ça a marché pour moi.

  1. Ouvrir l'invite de commande
  2. Exécutez "SqlLocalDB.exe start"
  3. La réponse du système "Instance LocalDB" mssqllocaldb "a démarré."
  4. Dans VS , View / Server Explorer / (clic droit) Connexions de données / Ajouter une connexion
    • Source de données: Microsoft SQL Server (SqlClient)
    • Nom du serveur: (localdb) \ MSSQLLocalDB
    • Connectez-vous au serveur: utilisez l'authentification Windows
  5. Appuyez sur "Tester la connexion", puis sur OK.
Ader Hwang
la source
8

Les éléments suivants fonctionnent avec Visual Studio 2017 Community Edition sur Windows 10 à l'aide de SQLServer Express 2016.

Ouvrez un PowerShell vérifiez ce qu'il est appelé à l'aide SqlLocalDB.exe infoet s'il fonctionne avec SqlLocalDB.exe info NAME. Voici à quoi cela ressemble sur ma machine:

> SqlLocalDB.exe info
MSSQLLocalDB
> SqlLocalDB.exe info MSSQLLocalDB
Name:               mssqllocaldb
Version:            13.0.1601.5
Shared name:
Owner:              DESKTOP-I4H3E09\simon
Auto-create:        Yes
State:              Running
Last start time:    4/12/2017 8:24:36 AM
Instance pipe name: np:\\.\pipe\LOCALDB#EFC58609\tsql\query
>

S'il ne fonctionne pas, vous devez le démarrer avec SqlLocalDB.exe start MSSQLLocalDB. Quand il fonctionne, vous voyez le Instance pipe name:qui commence par np:\\. Copiez cette chaîne de tuyau nommée. Dans VS2017, ouvrez la vue Server Exploreret créez une nouvelle connexion de type Microsoft SQL Server (SqlClient)(ne vous laissez pas berner par les autres types de fichiers que vous souhaitez utiliser comme type de connexion complet) et définissez leServer name: pour être le nom du canal d'instance que vous avez copié à partir de PowerShell.

J'ai également défini la Connect to databasepour être la même base de données qui était dans la chaîne de connexion qui fonctionnait dans mon projet Dotnet Core / Entity Framework Core qui a été configuré à l'aide dedotnet ef database update .

Vous pouvez vous connecter et créer une base de données à l'aide de sqlcmdet de la chaîne de canaux nommée:

sqlcmd -S np:\\.\pipe\LOCALDB#EFC58609\tsql\query 1> create database EFGetStarted.ConsoleApp.NewDb; 2> GO

Il existe des instructions sur la façon de créer un utilisateur pour votre application à https://docs.microsoft.com/en-us/sql/tools/sqllocaldb-utility

simbo1905
la source
7

Visual Studio 2015 RC, LocalDb 12 est installé, des instructions similaires à celles d'avant mais ne devraient toujours pas être nécessaires pour connaître la «magie», avant de l'utiliser, l'instance par défaut aurait dû être activée ... Rant complete, no for solution :

cmd> sqllocaldb start

Qui affichera

LocalDB instance "MSSQLLocalDB" started.

Le nom de votre instance peut différer. Dans les deux cas, passez à VS et ouvrez l'Explorateur de serveurs, cliquez avec le bouton droit sur Connexions de données, choisissez Ajouter, choisissez SQL Server, dans le type de nom de serveur:

(localdb)\MSSQLLocalDB

Sans entrer de nom de base de données, cliquez sur «Tester la connexion».

OzBob
la source
6

Le correctif ne fonctionne pas.

Exactement comme dans l'illustration d'exemple, toutes ces étapes fournissent uniquement l'accès aux bases de données "système" et aucune option pour sélectionner les bases de données utilisateur existantes auxquelles vous souhaitez accéder.

La solution pour accéder à une instance de serveur Microsoft SQL local (pas Express Edition) réside du côté SQL Server:

  1. Ouvrez la boîte de dialogue Exécuter (WinKey + R)
  2. Type: "services.msc"
  3. Sélectionnez le navigateur SQL Server
  4. Cliquez sur Propriétés
  5. Changez "désactivé" en "Manuel" ou "Automatique"
  6. Lorsque le bouton de service "Démarrer" est activé, cliquez dessus.

Terminé! Vous pouvez maintenant sélectionner votre serveur SQL local dans la liste Nom du serveur dans les propriétés de connexion.

alejandrob
la source
7
Ce Q / A StackOverflow concerne LocalDB . Je pense que votre réponse consiste à activer d'autres instances de SQL.
orad du
J'ai essayé ce correctif sur l'environnement local et il fait le FIX comme prévu pour la question d'origine publiée, pas ce que vous pensez qu'il fait. Ne présumez pas que Enterprise Edition = environnement d'entreprise. Certains d'entre nous utilisent cette édition pour le développement local sur une machine de groupe de travail.
alejandrob
Même si je devais encore entrer (localdb) plutôt que d'utiliser le navigateur, cela l'a corrigé pour moi, donc cela répond bien à la question.
PeterJ
4

Exécutez le CMD en tant qu'administrateur.

  1. à partir du menu Démarrer 'cmd' - attendez qu'il le trouve.
  2. Faites un clic droit sur cmd et sélectionnez ouvrir en tant qu'administrateur
  3. tapez: cd C: \ Program Files \ Microsoft SQL Server \ 120 \ Tools \ Binn
  4. type: démarrage SqlLocalDB
  5. tapez maintenant: info SqlLocalDB
  6. Affiche les instances SQL en cours d'exécution disponibles ... choisissez ce que vous voulez ...
  7. pour en savoir plus sur le type d'instance: SqlLocalDB info instanceName

  8. à partir de VS, vous pouvez configurer votre connexion Dans VS / Afficher / Explorateur de serveurs / (clic droit) Connexions de données / Ajouter une source de données de connexion: Microsoft SQL Server (SqlClient) Nom du serveur: (localdb) \ MSSQLLocalDB Connectez-vous au serveur: utilisez Windows Authentification Appuyez sur "Tester la connexion", puis sur OK.

  9. travail accompli

guestDoug
la source
3

Le moyen le plus rapide dans Visual Studio 2017 est d'aller dans Outils -> SQL Server -> Nouvelle requête. Choisissez parmi les bases de données locales et choisissez le nom de base de données souhaité en bas.

Voie alternative

Le nom du serveur Visual Studio 2017 est:

(localdb)\MSSQLLocalDB

Ajoutez la nouvelle connexion en utilisant le menu Outils -> Se connecter à la base de données ...

Samuel
la source
Si vous n'avez pas installé SQLExpress sur une instance par défaut, vous pouvez également essayer ... '(localdb)'
Jason Geiger
1

J'ai suivi les étapes ci-dessus, mais j'ai oublié d'installer le SQL Server 2014 LocalDB avant la configuration de Visual Studio 2015.

Mes étapes sont les suivantes:

  1. Installez SQL Server 2014 LocalDB;
  2. Ouvrez Visual Studio 2015, puis l' Explorateur d'objets SQL Server ;
  3. Recherchez votre LocalDB sous la balise SQL Server.

J'espère que cela aidera quelqu'un.

Mondi
la source
0

Scénario: Windows 8.1, VS2013 Ultimate, SQL Express installé et en cours d'exécution, navigateur SQL Server désactivé. Cela a fonctionné pour moi:

  1. J'ai d'abord activé le navigateur SQL Server sous les services.
  2. Dans Visual Studio: ouvrez la console du gestionnaire de packages, puis tapez: Enable-Migrations ; Tapez ensuite Enable-Migrations -ContextTypeName YourContextDbName qui a créé le dossier Migrations dans VS.
  3. Dans le dossier Migrations, vous trouverez le fichier "Configuration.cs", activez les migrations automatiques en: AutomaticMigrationsEnabled = true;
  4. Exécutez à nouveau votre application, l'environnement crée une connexion par défaut et vous verrez les nouvelles tables de votre contexte. Cette nouvelle connexion pointe vers le localdb. La chaîne de connexion créée affiche: Source de données = (LocalDb) \ v11.0 ... (plus de paramètres et chemin d'accès au fichier mdf créé)

Vous pouvez maintenant créer une nouvelle connexion avec le nom du serveur: (LocalDb) \ v11.0 (actualisation du hit) Se connecter à une base de données: sélectionnez votre nouvelle base de données dans la liste déroulante.

J'espère que ça aide.

Armando S
la source
-1

Avec SQL Server 2017 et Visual Studio 2015, j'ai utilisé localhost\SQLEXPRESS

entrez la description de l'image ici

Ben S
la source