在PowerShell中通过SQLCMD连接到LocalDB


10

我正在尝试使用SQLCMD实用程序通过PowerShell访问计算机上的“ localdb \ MSSQLLocalDB”服务器。我正在使用PowerShell v5,.NET v5.0,并且服务器名称是(localdb)\MSSQLLocalDB在Microsoft SQL Server Management Studio 2014中连接到服务器时的名称。

PS C:\> sqlcmd -S localdb\MSSQLLocalDBPS C:\> sqlcmd -S .\localdb\MSSQLLocalDB导致此错误:

Sqlcmd:错误:SQL Server的Microsoft ODBC驱动程序11:SQL Server网络接口:查找指定的[xFFFFFFFF]服务器/实例时出错。

我在Management Studio中查询了服务器名称,SELECT @@ServerName-S在上述命令中使用了该名称,并得到了相同的错误。

PS C:\> sqlcmd -S localdb 给出此错误:

Sqlcmd:错误:SQL Server的Microsoft ODBC驱动程序11:命名管道提供程序:无法打开与SQL Server的连接[53]

其他说明:我可以使用以下连接字符串连接到服务器并在C#控制台应用程序中使用名为testdb01的数据库进行工作System.Data.SqlClient

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

Answers:


8

实例名称的大小写无关紧要。

您需要尝试:

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

“ localdb”部分需要用括号括起来,因为这是一种特殊的语法,它指向SQL Server Express LocalDB特定的API,该API允许在连接字符串中引用后自动启动实例。整个实例名称需要用双引号引起来。上面显示的命令行至少在PowerShell之外对我有用。


包括(localdb)在括号中看起来像是将其作为命令分开,并产生以下错误:术语“ localdb”未被识别为cmdlet,函数,脚本文件或可操作程序的名称。
jmk22

@ jmk22然后尝试将整个服务器名称放在双引号中:-S "(localdb)\MSSQLLocalDB"。如果这不起作用,那么我们可以尝试转义括号。但是不知何故,那些parren需要在那里。
所罗门·鲁兹基

1
报价做到了,谢谢!我已经编辑了您的答案以反映这一点。
jmk22
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.