Conéctese a LocalDB a través de SQLCMD en PowerShell


10

Estoy tratando de acceder al servidor "localdb \ MSSQLLocalDB" en mi computadora a través de PowerShell con la utilidad SQLCMD. Estoy usando PowerShell v5, .NET v5.0, y el nombre del servidor es (localdb)\MSSQLLocalDBcuando me conecto a él en Microsoft SQL Server Management Studio 2014.

PS C:\> sqlcmd -S localdb\MSSQLLocalDBy PS C:\> sqlcmd -S .\localdb\MSSQLLocalDBresulta en este error:

Sqlcmd: Error: Microsoft ODBC Driver 11 para SQL Server: Interfaces de red de SQL Server: Error al localizar el servidor / instancia especificada [xFFFFFFFF].

Pregunté el nombre del servidor en Management Studio SELECT @@ServerNamey lo usé después del -Scomando anterior y obtuve el mismo error.

PS C:\> sqlcmd -S localdb da este error:

Sqlcmd: Error: controlador ODBC de Microsoft 11 para SQL Server: proveedor de canalizaciones con nombre: no se pudo abrir una conexión a SQL Server [53]

Otras notas: Puedo conectarme al servidor y trabajar con una base de datos llamada testdb01 en una aplicación de consola C # usando System.Data.SqlClientesta cadena de conexión:

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

Respuestas:


8

La carcasa del nombre de la instancia no importa.

Tienes que probar:

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

La parte "localdb" debe estar entre paréntesis, ya que es una sintaxis especial que apunta a una API específica de SQL Server Express LocalDB que permite el inicio automático de la instancia al ser referenciada en una cadena de conexión. El nombre completo de la instancia debe estar entre comillas dobles. La línea de comandos que se muestra arriba funciona para mí, al menos fuera de PowerShell.


La inclusión (localdb)entre paréntesis parece que lo separa como un comando y da el siguiente error: El término 'localdb' no se reconoce como el nombre de un cmdlet, función, archivo de script o programa operable.
jmk22

@ jmk22 Intente poner el nombre completo del servidor entre comillas dobles: -S "(localdb)\MSSQLLocalDB". Si eso no funciona, entonces podemos intentar escapar del paréntesis. Pero de alguna manera esos padres necesitan estar allí.
Solomon Rutzky

1
Las citas lo hicieron, gracias! He editado tu respuesta para reflejar esto.
jmk22
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.