使用自定义端口从远程测试SQL Server连接不起作用

时间:2018-10-26 08:23:21

标签: sql-server powershell connection-string powershell-v5.0

我正在尝试使用下面提到的SQL Server脚本测试网络中远程计算机的power shell连接。

$dbhost = 'che-wv001\'
$dbinst = 'MSSQLSERVER'
$dbport = 'MSSQLSERVER,6755'
$dbname = 'master'
$driverName = 'SQL Server'

$username = 'user'
$password = 'user'

$cs = "Driver=$driverName;Server=$dbhost$dbport;Database=$dbname;User ID=$username;" +
      "Password=$password;"   

echo "ConnectionStr : $cs"

$cn = New-Object -COM 'ADODB.Connection'
$cn.ConnectionString = $cs
try {
  $cn.Open()
  if ($cn.State -eq 1) {
    'Connection Success'
    $cn.Close()
  } else {
    'not connected'
  }
} catch {
  echo $_.Exception.GetType().FullName, $_.Exception.Message
  #'not connected due to exception exception'
}

我使用自定义端口6755来创建SQL Server,而不是命名实例。使用che-wv001\MSSQLSERVER,6755并提供用户凭据通过SQL Server Management Studio连接到服务器没有问题。但是由于某些原因,当我从计算机上运行时,PowerShell脚本会引发以下错误:

  

System.Runtime.InteropServices.COMException
  [Microsoft] [ODBC SQL Server驱动程序] [DBNETLIB]找不到指定的SQL服务器。

我在这里想念什么?

1 个答案:

答案 0 :(得分:1)

您基本上可以使用具有以下语法的连接字符串并连接到数据库。

$cnString = "Data Source=Server\instance,port;Initial Catalog=master;Trusted_Connection=true;"
$cn = new-object system.data.sqlclient.sqlconnection($cnstring)
$cnSql = New-Object Microsoft.sqlserver.management.common.serverconnection($cn)
$s = New-Object Microsoft.sqlserver.management.smo.server($cnSql)
$s | Select Name, Version