无法通过PowerShell中的SQLCMD连接到localdb - 什么是服务器实例名称?

时间:2015-12-24 19:17:25

标签: sql-server powershell sqlcmd localdb

SQL Server新手 - 我试图通过PowerShell使用SQLCMD实用程序访问计算机上的localdb \ MSSQLLocalDB服务器。我使用的是PowerShell v5,.NET v5.0,当我在Microsoft SQL Server Management Studio 2014中连接到服务器名称时,服务器名称为<?php echo $_GET['user'];?>

(localdb)\MSSQLLocalDBPS C:\> sqlcmd -S localdb\MSSQLLocalDB会导致此错误:

  

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

我在Management Studio中使用PS C:\> sqlcmd -S .\localdb\MSSQLLocalDB查询服务器名称,并在上述命令中的SELECT @@ServerName之后使用该名称并得到相同的错误。

-S出现此错误:

  

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

其他说明:我可以使用PS C:\> sqlcmd -S localdb连接到服务器并使用此连接字符串在C#控制台应用程序中使用名为 testdb01 的数据库:

System.Data.SqlClient

关于从哪里开始或如何处理此问题的任何想法?

1 个答案:

答案 0 :(得分:4)

将参数从PowerShell传递到EXE可能很棘手。我认为你需要使用单引号来转义parens,这意味着内容是一个静态文字字符串,或者是反引号转义字符:

sqlcmd -S '(localdb)\MSSQLLocalDB' -Q "Select @@servername"

sqlcmd -S `(localdb`)\MSSQLLocalDB -Q "Select @@servername"

甚至使用变量:

PS H:\> $myserver = '(localdb)\MSSQLLocalDB'

PS H:\> sqlcmd -S $myserver -Q "Select @@servername"

另外,如果您使用的是sqlcmd,或许可以查看PowerShell更原生的Invoke-Sqlcmd:

PS SQLSERVER:\> Invoke-Sqlcmd -Server $myserver -Query "Select @@servername"