Verificamos nossos servidores SQL usando powershell. O script passa por todos os servidores em um arquivo de texto e envia a saída para um arquivo de texto quando pode se conectar. Mas quando não consegue se conectar, ele exibe um erro na janela do PS e pula para o segundo servidor na lista. O problema com isso é que, quando agendamos esse script para execução (autônoma), não recebemos um relatório de nenhuma falha no arquivo de texto. O que eu realmente quero fazer é .... tente conectar-se a um servidor SQL, se puder, envie a saída para o arquivo e, se não puder, escreva algo como "Falha ao conectar ao nome do servidor" no arquivo. A seguir está o script que estou usando como exemplo
function checkSQLRestart([string] $Hostname )
{
$con="server=$Hostname;database=master;Integrated security=sspi"
$da=New-Object System.Data.SqlClient.SqlDataAdapter ("
declare @ServerRestartDate datetime
set @ServerRestartDate = (select crdate from master..sysdatabases where dbid=2)
if(@ServerRestartDate>GETDATE()-1)
print @@servername +' was restarted in last 24 hours. Restart date/time = '+cast(@ServerRestartDate as varchar(20))
",$con)
$dt=New-Object System.Data.DataTable
$da.fill($dt)|Out-Null
$svr
$dt|Format-table -AutoSize |Out-File $OutputFile -Append
}
Eu tentei usar coisas como
if($da -eq -1)
{
write-host "failed to connect"
}
Mas não funcionou.
Alguma ajuda por favor?
Você precisa tentar/capturar a exceção.