У меня есть следующий оператор try-catch для обработки таблицы / измерения БД.По какой-то причине, если я отключаю службу (MSSQLSERVER) на сервере, первый оператор 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) служба не работает на сервере!