Powershell Invoke-SqlCmd:指定端口

时间:2015-10-27 16:34:56

标签: sql-server powershell

我想连接到数据库以在该数据库上执行脚本,但是,我只能使用特定的端口号访问相关数据库。

我在代码方面有这些方面:

Invoke-SqlCmd -ServerInstance "Servername,53806" -Database "DatabaseName" -InputFile $File.Fullname -Verbose | Out-File -filePath "D:\Test\TestSQLCmd.rpt"

当我运行这个PS片段时,一切都没有发生。报告中没有写入任何内容。没有任何东西写入控制台。当我将片段更改为:

Invoke-SqlCmd -ServerInstance "Servername","53806" -Database "DatabaseName" -InputFile $File.Fullname -Verbose | Out-File -filePath "D:\Test\TestSQLCmd.rpt"

Invoke-SqlCmd -ServerInstance Servername,53806 -Database "DatabaseName" -InputFile $File.Fullname -Verbose | Out-File -filePath "D:\Test\TestSQLCmd.rpt"

我收到错误,说参数ServerInstance的值不能为null。

如果删除端口,脚本运行时间会更长,导致在建立连接时出现明显的网络相关或实例特定错误。错误通知。

在ServerInstance参数中使用Invoke-SqlCmd时,如何指定端口。

2 个答案:

答案 0 :(得分:1)

您的第一种语法是正确的,例如以下对我有用:

Invoke-SqlCmd -ServerInstance "DbServer,29487" -Database "Master" -Verbose -Query "Select @@ServerName"

但请确保已配置TCP连接。如果命名实例正在运行,则可能是您正在通过命名管道连接。

一种简单的测试方法是使用Telnet:

telnet server port

看看它是否连接。如果它没有你需要集中注意力的地方。

(如果找不到Telnet,可能需要将其作为功能安装)。

答案 1 :(得分:-1)

试试这个:

Invoke-SqlCmd -ServerInstance `"Servername,53806`" -Database "DatabaseName" -InputFile $File.Fullname -Verbose | Out-File -filePath "D:\Test\TestSQLCmd.rpt"