Connettersi a LocalDB tramite SQLCMD in PowerShell


10

Sto provando ad accedere al server "localdb \ MSSQLLocalDB" sul mio computer tramite PowerShell con l'utilità SQLCMD. Sto usando PowerShell v5, .NET v5.0 e il nome del server è (localdb)\MSSQLLocalDBquando mi connetto ad esso in Microsoft SQL Server Management Studio 2014.

PS C:\> sqlcmd -S localdb\MSSQLLocalDBe PS C:\> sqlcmd -S .\localdb\MSSQLLocalDBgenera questo errore:

Sqlcmd: errore: Driver ODBC Microsoft 11 per SQL Server: interfacce di rete di SQL Server: errore nella localizzazione del server / istanza specificata [xFFFFFFFF].

Ho richiesto il nome del server in Management Studio SELECT @@ServerNamee l' ho usato dopo il -Scomando precedente e ho ottenuto lo stesso errore.

PS C:\> sqlcmd -S localdb dà questo errore:

Sqlcmd: errore: driver ODBC Microsoft 11 per SQL Server: provider di tubi denominato: impossibile aprire una connessione a SQL Server [53]

Altre note: sono in grado di connettermi al server e lavorare con un database chiamato testdb01 in un'app console C # usando System.Data.SqlClientcon questa stringa di connessione:

"Data Source=(localdb)\\mssqllocaldb;Initial Catalog=testdb01;Integrated Security=SSPI;"

Risposte:


8

Il case del nome dell'istanza non ha importanza.

Devi provare:

sqlcmd -S "(localdb)\MSSQLLocalDB" -d testdb01

La parte "localdb" deve essere racchiusa tra parentesi in quanto si tratta di una sintassi speciale che punta a un'API specifica LocalDB di SQL Server Express che consente l'avvio automatico dell'istanza al momento del riferimento in una stringa di connessione. L'intero nome dell'istanza deve essere racchiuso tra virgolette doppie. La riga di comando mostrata sopra funziona per me, almeno al di fuori di PowerShell.


L'inclusione (localdb)tra parentesi sembra separarla come comando e genera il seguente errore: Il termine "localdb" non è riconosciuto come il nome di un cmdlet, una funzione, un file di script o un programma eseguibile.
jmk22,

@ jmk22 Poi prova a mettere l'intero nome del server tra virgolette: -S "(localdb)\MSSQLLocalDB". Se non funziona, allora possiamo provare a sfuggire alla parentesi. Ma in qualche modo quei genitori devono essere lì.
Solomon Rutzky,

1
Le citazioni lo hanno fatto, grazie! Ho modificato la tua risposta per riflettere questo.
jmk22
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.