Estou tentando construir consultas TSQL para substituir várias ferramentas GUI fornecidas pelo SQL Server Management Studio. Uma dessas ferramentas é o Job Activity Monitor
, acessível pela Object Explorer
janela.
Nosso ambiente de banco de dados atual inclui um cluster com 3 nós (um primário e duas réplicas somente leitura), bem como um único servidor independente próximo ao cluster.
Por brevidade, chamarei os nós de N1, N2 e N3 e o servidor independente S1 .
Recentemente, configuramos Multi-Server Job Administration
nossos servidores, usando S1 como servidor MSX (mestre) e N1, N2 e N3 como servidores TSX (destino).
Isso significa que os trabalhos do SQL Agent que operam nos nós de cluster são criados e gerenciados a partir de S1.
Os servidores TSX relatam seu estado, resultado etc para o servidor MSX, que pode ser acessado usando o referido arquivo Job Activity Monitor
. A partir do Job Activity Monitor
, o histórico de tarefas de cada servidor inscrito (TSX) pode ser acessado selecionando View history
:
Esta é a informação que estou tentando recriar, usando uma consulta TSQL no servidor MSX. Eu quero ver o resultado e o histórico dos trabalhos de todos os servidores inscritos, semelhante ao que é exibido pela janela da GUI.
Eu tentei vasculhar as tabelas e visualizações relacionadas ao trabalho do banco de msdb
dados, mas sem sorte. A msdb.dbo.sysjobhistory
tabela no servidor MSX não contém nenhum histórico de servidores inscritos, e eu não consigo encontrar nenhuma boa documentação sobre como mais eu faria para coletá-la. Esses dados são acessíveis através do TSQL? Qualquer recurso relevante é muito apreciado.
Sempre que você quiser ver o que o SSMS está sendo executado, você sempre pode iniciar um rastreamento e um filtro do Profiler/Extended Events no seu login.
Fazer isso a partir do MSX master e visualizar o histórico de trabalhos de um Multi-Server obtém esta consulta: