Criei um trabalho de script/agente que pesquisa nossos servidores vinculados a cada 10 minutos para garantir que estejam online. Agora, quando alguém fica offline, gera um e-mail e me notifica. Veja abaixo:
Agora, agora ele usa apenas um passa/falha. O que eu quero fazer é, quando a comunicação entre os servidores ficar offline, gerar não apenas que está offline, mas também o motivo. Semelhante à leitura que você obtém do SSMS quando testa um servidor vinculado e está offline:
Isso é possível? Procurei parâmetros detalhados adicionais que possam me ajudar a fazer isso, mas não consegui encontrar nenhum. As informações são geradas no SSMS, o que me leva a acreditar que existe alguma maneira de obtê-las, só não sei como.
Obrigado como sempre pessoal!
ATUALIZADO Tive que adicionar algumas funcionalidades específicas do sistema a isso, bem como meu próprio SQL que eu já havia construído, mas o relatório de erros está online. Funciona com nossos servidores SQL e nossos ambientes iSeries/400. Aqui está o que ele cospe agora:
Obrigado novamente por toda a ajuda neste. Pode ser necessário postar isso no SSC para que outros possam usá-lo.
Tal como acontece com a resposta vinculada , você deve ser capaz de fazer isso usando
TRY/CATCH
; o problema (sem trocadilhos) com a outra resposta é que, como o nome do servidor vinculado é validado em tempo de compilação, caso o teste falhe, o lote não é executado. Em vez disso, você pode colocar o teste do servidor vinculado dentro do SQL dinâmico:Isso deve permitir que você capture uma variedade de erros, incluindo:
Se
@srv
não for preenchido:Se
@srv
não for um servidor vinculado definido:Se uma conexão
@srv
falhou no momento da criação do servidor vinculado:Se uma conexão
@srv1
expirar (por exemplo, o servidor está offline) - isso estava usando um servidor vinculado local, portanto, o texto pode ser um pouco diferente ao usar pipes nomeados ou TCP/IP:(Com TCP/IP, Kin diz que a mensagem de erro é:
Se
@srv
não estiver configurado para acesso a dados:Se o servidor vinculado foi configurado com o nome de usuário/senha errado (ou passa as credenciais atuais e elas falham):
Você também pode iniciar o lote
EXECUTE AS
se estiver tentando testar o servidor vinculado com credenciais específicas.Se o teste do servidor vinculado for bem-sucedido, você poderá continuar dentro do
TRY
bloco para fazer outras coisas, comoOPENQUERY
consultas usando nomes de 4 partes etc., e deve haver uma série de outros erros que você pode capturar e relatar detalhadamente. ..Aaron respondeu sua pergunta perfeitamente. Estou apenas adicionando o script completo que escrevi para testar em meu ambiente.
Abaixo segue o roteiro:
Abaixo está a saída: