Come connettersi a LocalDB in Visual Studio Server Explorer?


240

Non riesco a credere di non essere riuscito a trovare una soluzione funzionante dopo un'ora di ricerche. Sto seguendo questo articolo su Entity Framework 6.0 che fornisce una semplice guida su Code First. Ho creato il progetto e installato l'ultimo pacchetto EF Nuget per la compilazione del progetto. Ho anche verificato che ho installato LocalDB di Microsoft SQL Server 2012 Express fornito con Visual Studio 2013. Non ho altre istanze di SQL installate sul mio computer locale. Il programma viene eseguito e le voci vengono aggiunte al database e emesse nella console. Ma quando l'articolo dice "controlla il tuo localdb" non dice come! Non vedo alcun file '.mdf' o '.ldf' creato nella cartella del progetto. Ho provato in tutti i modi a connettere Visual Studio ' s Server Explorer su LocalDB. La procedura guidata non è in grado di individuare(localdb) o non riesco a trovare alcun provider in Esplora server per accettare la stringa di connessione come (localdb)\v11.0;Integrated Security=true;ho visto questo chiesto diversi posti in StackOverflow ma nessuna risposta funziona o contrassegnata come risposta. Per favore aiutatemi, questo non deve essere così frustrante!

Quali sono i passaggi per connettere Visual Studio Server Explorer a LocalDB?


70
Ho pietà delle persone che stanno entrando in questo business. 20 anni fa, gli strumenti erano in realtà molto più facili da usare. La documentazione ora è a malapena adeguata e, nella maggior parte dei casi, inferiore a. Vedo ora "documentazione" su MSDN che spiega semplicemente un metodo, come "pippo" -> "Questo è il metodo pippo". Davvero, Microsoft? Che cosa è successo agli scrittori tecnici? Che cosa è successo a Books Online (per davvero)?
Pittsburgh DBA,

1
Assicurati di eseguire Visual Studio come amministratore.
Darren Griffith,

4
Se stai bene usando SQL Server Object Explorer di Visual Studio invece di Server Explorer . È soluzione più semplice (meno la configurazione manuale), controllare la mia risposta: stackoverflow.com/a/41906391/3645638
Svek

La mia installazione crea il database in sqlserverexpress anziché in localdb. Cosa causa questo?
Jason Cheng,

Risposte:


282

In Visual Studio 2012 tutto quello che dovevo fare era inserire:

(localdb)\v11.0

Visual Studio 2015 e Visual Studio 2017 sono stati modificati in:

(localdb)\MSSQLLocalDB

come nome del server quando si aggiunge un'origine Microsoft SQL Server Datain:

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

e quindi sono stati popolati i nomi dei database. Non ho dovuto fare tutti gli altri passaggi nella risposta accettata, anche se sarebbe bello se il nome del server fosse disponibile automaticamente nella casella combinata del nome del server.

È inoltre possibile sfogliare i nomi dei database LocalDB disponibili sul computer utilizzando:

View/SQL Server Object Explorer.

4
Sì, questo è ciò che dovrebbe funzionare la prima volta. In caso contrario, i passaggi nella risposta accettata dovrebbero avviare il servizio e farlo funzionare.
orad,

Forse SQL Server Object Explorer l'ha avviato per me come l'ho usato per scoprire quale nome del server Entity Framework aveva usato. Avevo trovato questa domanda, ma ero un po 'spaventato nel cercare la risposta perché speravo in qualcosa di più semplice e non l'avevo letto completamente perché pensavo di dover usare il nome della pipa :)
RationalDev piace GoFundMonica il

Sono solo cieco ai dettagli o è estremamente frustrante che l'impostazione non sia più intuitiva? Sia nel 2012 che nel 2015, sembra che stiano quasi nascondendo cose come queste in tutto l'IDE.
Rex_C

grazie. Mi stavo scervellando fino a trovare la tua risposta.
Alexandre N.

5
Perché Microsoft, perché? Perché cambiare il nome e non aggiornare la documentazione? (Grazie per il percorso VS 2015)
Thibault D.

256

OK, rispondendo alla mia domanda.

Passaggi per connettere LocalDB a Visual Studio Server Explorer

  1. Apri il prompt dei comandi
  2. Correre SqlLocalDB.exe start v11.0
  3. Correre SqlLocalDB.exe info v11.0
  4. Copia il nome della pipe dell'istanza che inizia con np: \ ...
  5. In Visual Studio selezionare STRUMENTI> Connetti al database ...
  6. Per Nome server inserire (localdb)\v11.0. Se non ha funzionato, utilizzare il nome della pipe dell'istanza copiato in precedenza. È inoltre possibile utilizzare questo per connettersi con SQL Management Studio.
  7. Seleziona il database sul prossimo elenco a discesa
  8. Clicca OK

inserisci qui la descrizione dell'immagine


86
Quasi ogni azione in questi giorni sulla piattaforma MS coinvolge alcune conoscenze magiche o precedenti memorizzate .... chi sosterrà queste cose in 5 anni quando sarà in atto un nuovo set di magia?
Osso

34
Grazie! Solo per aggiungere a questa eccellente risposta (e ottima domanda): SqlLocalDb infoelencherà tutti i nomi dei server. Nel mio caso, dopo l'EF-code prima magia, il mio database è finito in MSSQLLocalDBnon v11.0, così sono entrato (localdb)\MSSQLLocalDBnella finestra di dialogo Aggiungi connessione.
biscuit314,

1
SqlLocalDb.exe appare due volte nel mio percorso di sistema, prima in C: \ Programmi \ Microsoft SQL Server \ 110 \ Tools \ Binn e poi in C: \ Programmi \ Microsoft SQL Server \ 120 \ Tools \ Binn. Quindi solo la versione precedente verrà mai chiamata! Ho installato sia VS2012 che VS 2013.
John Pankowicz,

2
Credo che sempre più persone stiano gravitando su altri linguaggi di programmazione da roba Microsoft. Questa semplice roba di configurazione e posizione dei file è diventata più difficile di qualsiasi altra lingua manchi. Se mancano affatto.
JustJohn,

4
Ho grattato la testa per tutto il pomeriggio per questo. Perché devono renderlo così complicato, quando era così dannatamente facile? Grazie per l'aiuto.
George Williams,

71

Seleziona in:

  1. Fonte di dati: Microsoft SQL Server (SqlClient)
  2. Nome del server: (localdb)\MSSQLLocalDB
  3. Accedere al server: Use Windows Authentication

Premi il pulsante Aggiorna per ottenere il nome del database :)

Immagine dello schermo


1
in qualche modo è stata l'unica risposta operativa il 28/04/2015
Maazza,

4
stesso qui vs2015 .. Questa era la risposta .. Immagino che abbiano rinominato localDb?
punkouter

1
Questo è stato fatto per VS2015 RC su Win 8.1.
ScottG,

Circa il nome del server: stackoverflow.com/questions/27197359/...
kr85

Funziona anche con vs2017.
Toke Breer-Mortensen,

25

Utilizzare SQL Server Object Explorer (SSOX) invece

A differenza delle altre risposte, questo approccio utilizza:
- Nessun comando speciale.
- Nessuna configurazione complicata.
Basta usare Esplora oggetti di SQL Server

È abbastanza semplice ...

  • Dal menu Visualizza , aprire Esplora oggetti di SQL Server .

uno

  • Fare clic destro sulla {YourTableName}tabella> Visualizza Designer

Due

Fatto.


16

Ha funzionato per me.

  1. Apri il prompt dei comandi
  2. Esegui "SqlLocalDB.exe start"
  3. Risposta di sistema "Istanza LocalDB" mssqllocaldb "avviata".
  4. In VS , Visualizza / Esplora server / (clic destro) Connessioni dati / Aggiungi connessione
    • Origine dati: Microsoft SQL Server (SqlClient)
    • Nome server: (localdb) \ MSSQLLocalDB
    • Accedere al server: utilizzare l'autenticazione di Windows
  5. Premere "Test connessione", quindi OK.

8

Di seguito funziona con Visual Studio 2017 Community Edition su Windows 10 utilizzando SQLServer Express 2016.

Apri un PowerShell per controllare come viene chiamato SqlLocalDB.exe infoe se è in esecuzione SqlLocalDB.exe info NAME. Ecco come appare sulla mia macchina:

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

Se non è in esecuzione, è necessario avviarlo con SqlLocalDB.exe start MSSQLLocalDB. Quando è in esecuzione, vedi Instance pipe name:quale inizia con np:\\. Copia quella stringa di pipe denominata. All'interno di VS2017 apri la vista Server Explorere crea una nuova connessione di tipo Microsoft SQL Server (SqlClient)(non lasciarti ingannare dagli altri tipi di file che desideri il tipo di connessione full fat) e imposta ilServer name: nome della pipe dell'istanza che hai copiato da PowerShell.

Ho anche impostato lo Connect to databasestesso database che era nella stringa di connessione che funzionava nel mio progetto Dotnet Core / Entity Framework Core che è stato impostato usandodotnet ef database update .

È possibile accedere e creare un database utilizzando la sqlcmdstringa di pipe e denominata:

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

Ci sono istruzioni su come creare un utente per la tua applicazione su https://docs.microsoft.com/en-us/sql/tools/sqllocaldb-utility


7

Visual Studio 2015 RC, con LocalDb 12 installato, istruzioni simili a prima ma ancora non dovrebbe essere richiesto di conoscere 'magia', prima di usarlo, l'istanza predefinita avrebbe dovuto essere attivata ... Rant complete, no for solution :

cmd> sqllocaldb start

Quale verrà visualizzato

LocalDB instance "MSSQLLocalDB" started.

Il nome dell'istanza potrebbe essere diverso. In entrambi i casi, vai su VS e apri Esplora server, fai clic con il pulsante destro del mouse su Connessioni dati, scegli Aggiungi, scegli SQL Server, nel tipo di nome server:

(localdb)\MSSQLLocalDB

Senza inserire un nome DB, fare clic su "Verifica connessione".


6

La correzione non funziona.

Esattamente come nella figura di esempio, tutti questi passaggi forniscono solo l'accesso ai database "di sistema" e nessuna opzione per selezionare i database utente esistenti a cui si desidera accedere.

La soluzione per accedere a un'istanza del server Microsoft SQL locale (non Express Edition) risiede sul lato SQL Server:

  1. Apri la finestra di dialogo Esegui (WinKey + R)
  2. Tipo: "services.msc"
  3. Seleziona SQL Server Browser
  4. Fai clic su Proprietà
  5. Cambia "disabilitato" in "Manuale" o "Automatico"
  6. Quando il pulsante di servizio "Avvia" viene abilitato, fare clic su di esso.

Fatto! Ora puoi selezionare il tuo SQL Server locale dall'elenco Nome server in Proprietà connessione.


7
Questo StackOverflow Q / A riguarda LocalDB . Penso che la tua risposta riguardi l'abilitazione di altre istanze di SQL.
Orad,

Ho provato questa correzione sull'ambiente locale e fa il FIX come previsto per la domanda originale pubblicata, non quello che potresti pensare che faccia. Non dare per scontato che Enterprise Edition = ambiente Enterprise. Alcuni di noi usano quell'edizione per lo sviluppo locale su una macchina del gruppo di lavoro.
Alejandrob,

Anche se dovevo comunque inserire (localdb) anziché utilizzare il browser, questo mi ha risolto il problema, quindi risponde bene alla domanda.
PeterJ,

4

Esegui il CMD come amministratore.

  1. dal menu di avvio 'cmd' - attendi che lo trovi.
  2. Fare clic con il tasto destro su cmd e selezionare Apri come amministratore
  3. digitare: cd C: \ Programmi \ Microsoft SQL Server \ 120 \ Tools \ Binn
  4. tipo: avvio SqlLocalDB
  5. ora digitare: SqlLocalDB info
  6. Mostra le istanze sql in esecuzione disponibili ... scegli quello che vuoi ...
  7. per ulteriori informazioni sul tipo di istanza: SqlLocalDB informazioni nome istanza

  8. ora da VS è possibile impostare la connessione In VS , Visualizza / Esplora server / (clic destro) Connessioni dati / Aggiungi connessione Origine dati: Microsoft SQL Server (SqlClient) Nome server: (localdb) \ MSSQLLocalDB Accedere al server: Usa Windows Autenticazione Premere "Test connessione", quindi OK.

  9. lavoro fatto


3

Il modo più veloce in Visual Studio 2017 è accedere a Strumenti -> SQL Server -> Nuova query. Scegliere tra i database locali e scegliere il nome del database desiderato in basso.

Modo alternativo

Il nome del server di Visual Studio 2017 è:

(localdb)\MSSQLLocalDB

Aggiungi la nuova connessione utilizzando il menu Strumenti -> Connetti al database ...


Se non hai installato SQLExpress su un'istanza predefinita, puoi anche provare ... '(localdb)'
Jason Geiger,

1

Ho seguito i passaggi precedenti, ma ho dimenticato di installare SQL Server 2014 LocalDB prima della configurazione di Visual Studio 2015.

I miei passi sono i seguenti:

  1. Installare il LocalDB di SQL Server 2014;
  2. Aprire Visual Studio 2015 e quindi Esplora oggetti SQL Server ;
  3. Trova il tuo LocalDB sotto il tag SQL Server.

Spero che questo aiuti qualcuno.


0

Scenario: Windows 8.1, VS2013 Ultimate, SQL Express installato e in esecuzione, browser SQL Server disabilitato. Questo ha funzionato per me:

  1. Per prima cosa ho abilitato SQL Server Browser sotto i servizi.
  2. In Visual Studio: apri la Console Gestione pacchetti quindi digita: Enable-Migrations ; Quindi digitare Enable-Migrations -ContextTypeName YourContextDbName che ha creato la cartella Migrations in VS.
  3. All'interno della cartella Migrations troverai il file "Configuration.cs", attiva le migrazioni automatiche di: AutomaticMigrationsEnabled = true;
  4. Esegui nuovamente l'applicazione, l'ambiente crea DefaultConnection e vedrai le nuove tabelle dal tuo contesto. Questa nuova connessione punta a localdb. La stringa di connessione creata mostra: Origine dati = (LocalDb) \ v11.0 ... (più parametri e percorso del file mdf creato)

Ora puoi creare una nuova connessione con il nome del server: (LocalDb) \ v11.0 (premi aggiornamento) Connetti a un database: seleziona il tuo nuovo database dal menu a discesa.

Spero possa essere d'aiuto.


-1

Con SQL Server 2017 e Visual Studio 2015, ho usato localhost\SQLEXPRESS

inserisci qui la descrizione dell'immagine

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.