我想连接到数据库以在该数据库上执行脚本,但是,我只能使用特定的端口号访问相关数据库。
我在代码方面有这些方面:
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时,如何指定端口。
答案 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"