Тестирование подключения к SQL Server с удаленного компьютера через пользовательский порт не работает - PullRequest
0 голосов
/ 26 октября 2018

Я пытаюсь проверить подключение 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.У меня нет проблем с подключением к серверу через SQL Server Management Studio, используя che-wv001\MSSQLSERVER,6755, предоставляя учетные данные пользователя.Но по какой-то причине сценарий PowerShell выдает следующую ошибку при запуске с моего компьютера:

System.Runtime.InteropServices.COMException
[Microsoft] [Драйвер ODBC SQL Server] [DBNETLIB]Указанный сервер SQL не найден.

Что мне здесь не хватает?

1 Ответ

0 голосов
/ 26 октября 2018

Вы можете использовать строку соединения с приведенным ниже синтаксисом и подключаться к базе данных.

$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
...