Meilleure méthode pour voir si les processus SQL Server 2000 sont en cours d'exécution?

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

  •  23-09-2019
  •  | 
  •  

Question

Nous avons une ancienne machine à SQL Server 2000 où un groupe d'emplois courir du jour au lendemain. De temps en temps, après la maintenance du serveur est effectuée et la machine est redémarrée, certains composants SQL ne viennent pas avec le système d'exploitation (même si elles sont configurées pour le faire). Donc, avant notre travail de nuit sont censés courir, je voudrais (à partir d'une machine distante) exécuter des contrôles pour voir si SQL Server, SQL Server Agent, et le service OLAP de SQL Server sont en cours d'exécution. Je l'ai trouvé quelques petites choses qui semblent comme ils devraient travailler, mais je me demande si les experts de cette communauté peuvent commenter la qualité et la fiabilité de chaque approche. Je peux coder cette application comme un fichier de .vbs exécuter via Windows Tâches planifiées ou créer un C # service Windows.

Candidat 1: Exécuter une requête sur master..sysprocesses et regardez dans la colonne program_name pour les processus respectifs que je compte trouver.

Candidate 2: Exécuter une requête sur master..xpcmd_shell comme ceci:

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

Ensuite, regardez pour 'ÉTAT: 4 RUNNING' dans les résultats

Candidat 3: En utilisant le .NET Framework, recherchez le processus comme celui-ci: Vérifiez si un processus est en cours d'exécution sur un système distant en utilisant C #

Ceci est quelque chose qui a vraiment besoin que de courir une fois par jour et enverra une alerte e-mail si l'un des processus qui doivent être en cours d'exécution ne sont pas.

Était-ce utile?

La solution

Pour ceux intéressés par la solution que je fini avec ... lire la suite.

J'ai fini par aller avec le candidat 1 en raison du temps de développement facile et la familiarité que j'ai avec C # / ADO.NET / SQL Server. J'ai créé un C # service Windows pour appeler un proc stocké dans un événement Timer_Elapsed (stuff assez standard).

Voici les entrailles de la procédure stockée service appelle:

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')
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top