首页 文章

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

提问于
浏览
0

SQL Server新手在这里 - 我'm trying to access the localdb\MSSQLLocalDB server on my computer through PowerShell with the SQLCMD utility. I'm使用PowerShell v5,.NET v5.0,当我在Microsoft SQL Server Management Studio 2014中连接它时,服务器名称为 (localdb)\MSSQLLocalDB .

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

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

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

PS C:\> sqlcmd -S localdb 给出了这个错误:

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

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

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

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

1 回答

  • 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"
    

相关问题