Melhor método para verificar se os processos do SQL Server 2000 estão em execução?

StackOverflow https://stackoverflow.com/questions/2540110

  •  23-09-2019
  •  | 
  •  

Pergunta

Temos uma máquina SQL Server 2000 antiga onde vários trabalhos são executados durante a noite.Ocasionalmente, após a manutenção do servidor ser realizada e a máquina ser reinicializada, alguns componentes SQL não acompanham o SO (mesmo que estejam configurados para isso).Portanto, antes de nossos trabalhos noturnos serem executados, gostaria de (em uma máquina remota) executar algumas verificações para ver se o SQL Server, o SQL Server Agent e o serviço OLAP do SQL Server estão em execução.Encontrei algumas coisas que parecem funcionar, mas estou me perguntando se os especialistas desta comunidade podem comentar sobre a qualidade e confiabilidade de cada abordagem.Posso codificar este aplicativo como um arquivo .vbs executado por meio de tarefas agendadas do Windows ou criar um serviço C# do Windows.

Candidato 1:Execute uma consulta em master..sysprocesses e procure na coluna program_name os respectivos processos que espero encontrar.

Candidato 2:Execute uma consulta em master..xpcmd_shell assim:

exec master..xp_cmdshell 'sc \\hostname query SQLServerAgent'

Então procure por 'ESTADO:4 RUNNING 'nos resultados

Candidato 3:Usando o .NET Framework, procure o processo assim:Verifique se um processo está sendo executado em um sistema remoto usando C#

Isso é algo que realmente só precisa ser executado uma vez por dia e enviará um alerta por e-mail se algum dos processos que deveriam estar em execução não estiver.

Foi útil?

Solução

Para os interessados ​​​​na solução que encontrei... continue lendo.

Acabei optando pelo Candidato 1 devido ao fácil tempo de desenvolvimento e à familiaridade que tenho com C#/ADO.NET/SQL Server.Eu criei um serviço C# do Windows para chamar um processo armazenado dentro de um evento Timer_Elapsed (coisa bastante padrão).

Aqui estão os detalhes do processo armazenado que o serviço está chamando:

SELECT
    RTRIM(LTRIM(hostname)) AS hostname,
    RTRIM(LTRIM(program_name)) AS program_name,
    RTRIM(LTRIM(nt_domain)) AS nt_domain,
    RTRIM(LTRIM(nt_username)) AS nt_username,
    RTRIM(LTRIM(loginame)) AS loginame
FROM
    master..sysprocesses
WHERE
    hostname = 'CSSMCDBSW03'
AND
    program_name IN ('Microsoft SQL Server Analysis Services', 'SQLAgent - Generic Refresher')
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top