我有以下try-catch语句来处理数据库表/维度。由于某种原因,如果我关闭服务器上的(MSSQLSERVER)服务,则第一个if语句捕获
确保服务器正在运行
从不被触摸,而是进入第二个if条件并写入主机
错误处理维度:无法建立连接。确保这件事 服务器正在运行。
try {
Invoke-ProcessTable -DatabaseName "$DB" -Server "$server" -RefreshType "Full" -TableName "sometable" > $null
write-host "Processing completed!"
}
catch{
if($error[0].tostring().contains("Ensure that the server is running"))
{
write-host "`r`nProcessing failed!`r`n(MSSQLSERVER) service is not running on $server!"
#$exit = 1
}
elseif ($error[0])
{
Write-Host "Error Processing dimension: $($error[0])"
}
}
如果服务未在服务器上运行,则异常消息如下:
无法建立连接。确保服务器正在运行。
那么$error[0].tostring().contains("Ensure that the server is running")
它应该输出以下内容:
处理失败!(MSSQLSERVER)服务未在服务器上运行!