检查本地/ Azure服务器与SQL数据库实例之间的连接性吗?

时间:2019-07-01 18:19:49

标签: sql powershell azure-sql-database ssms

我们的BI团队混合使用本地服务器和Azure服务器,这些服务器运行脚本以对其他本地和Azure SQL数据库执行SQL流程。有时,由于服务器之间的连接问题,我们的过程会出错。我想编写一个脚本,在执行我们的ETL流程之前检查从服务器到服务器的连接。哪种脚本方法最适合此类连接检查?

我们可以ping以确保计算机处于联机状态,但是我们目前没有检查两台服务器之间连接的过程。该问题似乎与本地和云服务器之间的连接有关。这可能是由于防火墙和网络问题引起的,但是此问题是不定期发生的,并且可能是由于多种因素引起的。我们当前的连接方法是SQL Server身份验证。还有其他最佳的连接方式吗?

我想找到一种在本地/天蓝色云服务器与数据库之间进行脚本/监控/检查连接的好方法。一些示例脚本也将很棒!

1 个答案:

答案 0 :(得分:0)

要ping服务器,请使用 Test-Connection cmdlet。在Test-Connection命令的定义中,我确定缓冲区大小,要提交的ping数量以及它是否返回详细的ping状态信息或简单的布尔值。我将ea参数(ea是 ErrorAction 参数的别名)的值指定为0。值0指示cmdlet不显示错误信息(当ping是ping时显示错误。不成功)。

Pingtest的外观如下:

$servers = “dc1″,”dc3″,”sql1″,”wds1″,”ex1”

Foreach($s in $servers)

{

  if(!(Test-Connection -Cn $s -BufferSize 16 -Count 1 -ea 0 -quiet))

  {

   “Problem connecting to $s”

   “Flushing DNS”

   ipconfig /flushdns | out-null

   “Registering DNS”

   ipconfig /registerdns | out-null

  “doing a NSLookup for $s”

   nslookup $s

   “Re-pinging $s”

     if(!(Test-Connection -Cn $s -BufferSize 16 -Count 1 -ea 0 -quiet))

      {“Problem still exists in connecting to $s”}

       ELSE {“Resolved problem connecting to $s”} #end if

   } # end if

} # end foreach

通过这种方式,您可以确保连接处于活动状态,并且可以继续执行。 希望对您有所帮助。