Conectar-se ao LocalDB via SQLCMD no PowerShell

10

Estou tentando acessar o servidor "localdb \ MSSQLLocalDB" no meu computador através do PowerShell com o utilitário SQLCMD. Estou usando o PowerShell v5, .NET v5.0 e o nome do servidor é (localdb)\MSSQLLocalDBquando eu me conecto a ele no Microsoft SQL Server Management Studio 2014.

PS C:\> sqlcmd -S localdb\MSSQLLocalDBe PS C:\> sqlcmd -S .\localdb\MSSQLLocalDBresultar neste erro:

Sqlcmd: Erro: Driver ODBC da Microsoft 11 para SQL Server: Interfaces de rede do SQL Server: Erro ao localizar servidor / instância especificada [xFFFFFFFF].

Consultei o nome do servidor no Management Studio SELECT @@ServerNamee o usei após o -Scomando acima e obtive o mesmo erro.

PS C:\> sqlcmd -S localdb dá este erro:

Sqlcmd: Erro: Driver ODBC da Microsoft 11 para SQL Server: Provedor de Pipes Nomeados: Não foi possível abrir uma conexão com o SQL Server [53]

Outras notas: Consigo me conectar ao servidor e trabalhar com um banco de dados chamado testdb01 em um aplicativo de console C # usando System.Data.SqlClientesta cadeia de conexão:

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

Respostas:

8

A caixa do nome da instância não importa.

Você precisa tentar:

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

A parte "localdb" precisa estar entre parênteses, pois é uma sintaxe especial que aponta para uma API específica do SQL Server Express LocalDB que permite a inicialização automática da instância ao ser referenciada em uma cadeia de conexão. O nome completo da instância precisa estar entre aspas duplas. A linha de comando mostrada acima funciona para mim, pelo menos fora do PowerShell.

Solomon Rutzky
fonte
A inclusão (localdb)de parênteses parece separá-lo como um comando e fornece o seguinte erro: O termo 'localdb' não é reconhecido como o nome de um cmdlet, função, arquivo de script ou programa operável.
jmk22
@ jmk22 Então tente colocar o nome completo do servidor entre aspas: -S "(localdb)\MSSQLLocalDB". Se isso não funcionar, podemos tentar escapar do parêntese. Mas de alguma forma essas parênteses precisam estar lá.
Solomon Rutzky
11
As citações fizeram isso, obrigado! Editei sua resposta para refletir isso.
jmk22