我们的BI团队混合使用本地服务器和Azure服务器,这些服务器运行脚本以对其他本地和Azure SQL数据库执行SQL流程。有时,由于服务器之间的连接问题,我们的过程会出错。我想编写一个脚本,在执行我们的ETL流程之前检查从服务器到服务器的连接。哪种脚本方法最适合此类连接检查?
我们可以ping以确保计算机处于联机状态,但是我们目前没有检查两台服务器之间连接的过程。该问题似乎与本地和云服务器之间的连接有关。这可能是由于防火墙和网络问题引起的,但是此问题是不定期发生的,并且可能是由于多种因素引起的。我们当前的连接方法是SQL Server身份验证。还有其他最佳的连接方式吗?
我想找到一种在本地/天蓝色云服务器与数据库之间进行脚本/监控/检查连接的好方法。一些示例脚本也将很棒!
答案 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
通过这种方式,您可以确保连接处于活动状态,并且可以继续执行。 希望对您有所帮助。