通过PowerShell失败的数据库连接

时间:2018-01-26 02:57:01

标签: sql-server powershell

我在PowerShell中编写了这个函数来连接数据库,但是当我连接服务器而不是包含' \'时,我收到一条错误消息。在服务器名称中。有人可以帮忙吗?

错误讯息:

  

异常通话"打开"用" 0"参数:"建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或未找到   无障碍。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供程序:SQL网络接口,错误:26 - 错误定位   指定的服务器/实例)"

注意:这只发生在我连接到包含" \"的服务器时。在servername中。当我连接到不包含特殊字符的servername时,上面的函数非常有效。

function ExecuteSqlQuery ($Server, $Database, $SQLDBUser, $SQLDBPwd, $SQLQuery) 
{ 
     $Datatable = New-Object System.Data.DataTable       
     $Connection = New-Object System.Data.SQLClient.SQLConnection
     $connectionStr = 
  "server='$Server';database='$Database';trusted_connection=true;" 
 if($SQLDBUser -ne $null -and $SQLDBPwd -ne $null){
    $connectionStr = "server='$Server';database='$Database';User ID='$SQLDBUser';Password='$SQLDBPwd'"
 }
      $Connection.ConnectionString = $connectionStr 

 $Connection.Open() 
 $Command = New-Object System.Data.SQLClient.SQLCommand 
 $Command.Connection = $Connection 
 $Command.CommandText = $SQLQuery 
 try 
 {
     $Reader = $Command.ExecuteReader()     
     $Datatable.Load($Reader)
 } 
 catch {
  return($error)
}
 $Connection.Close()       
 return $Datatable 
}
}

1 个答案:

答案 0 :(得分:0)

如何使用\函数转义斜杠replace

$Server.replace('\\', '\\\\')
$connectionStr = "server='$Server';database='$Database';User ID='$SQLDBUser';Password='$SQLDBPwd'"