我们的BI团队混合了本地和Azure服务器,这些服务器运行脚本以对其他本地和Azure SQL数据库执行SQL进程。有时,我们的进程会因为与服务器之间的连接问题而出错。我想写一个脚本,在执行我们的ETL流程之前检查从-到服务器的连接。对于这种类型的连通性检查,哪些脚本方法是理想的?
我们可以ping以确保计算机在线,但我们当前没有检查两个服务器之间的连接的过程。这个问题似乎与本地服务器和云服务器之间的连接有关。这可能是由于防火墙和网络问题造成的,但该问题不定期发生,可能是由多种因素造成的。我们当前的连接方法是SQL Server身份验证。有没有其他最好的连接方式?
我想找出一种很好的方法来编写脚本/监视/检查混合的本地/azure云服务器和数据库之间的连接。一些示例脚本也会很棒!
发布于 2019-07-03 19:38:27
要ping服务器,我使用Test-Connection
cmdlet。在Test-Connection命令的定义中,我确定了缓冲区大小、要提交的ping数,以及它返回的是详细的ping状态信息还是简单的布尔值。我将ea参数(ea是ErrorAction
参数的别名)的值指定为0。值为0告诉cmdlet不显示错误信息( 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
通过这种方式,您可以确保连接是活动的,并且可以继续执行。希望能有所帮助。
https://stackoverflow.com/questions/56840583
复制相似问题