Pregunta

Tenemos un viejo de SQL Server 2000 de la máquina en donde un puñado de ejecución de los trabajos de la noche a la mañana.Ocasionalmente, después de que el servidor se realiza el mantenimiento y la máquina se reinicia, algunos componentes de SQL no vienen con el sistema operativo (incluso a pesar de que está configurado para hacerlo).Así que antes de nuestra noche de empleos se supone que deben funcionar, me gustaría (desde una máquina remota) ejecutar algunas comprobaciones para ver si SQL Server, el Agente SQL Server y SQL Server OLAP están en ejecución.He encontrado un par de cosas que parecen que debería funcionar, pero me pregunto si los expertos en esta comunidad puede hacer comentarios a la calidad y la confiabilidad de cada enfoque.Puedo código de esta aplicación como un .archivo vbs se ejecutan a través de las Tareas Programadas de Windows o crear un C# Servicio de Windows.

Candidato 1: Ejecutar una consulta en master..sysprocesses y buscar en el program_name columna para los respectivos procesos que esperaba encontrar.

Candidato 2: Ejecutar una consulta en master..xpcmd_shell así:

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

A continuación, busque el " ESTADO :4 RUNNING ' en los resultados

Candidato 3: El uso de la .NET Framework, búsqueda para el proceso como este:Comprobar si un proceso se está ejecutando en un sistema remoto usando C#

Esto es algo que realmente sólo necesita ejecutar una vez al día y enviará una alerta de correo electrónico si cualquiera de los procesos que debe ejecutar no lo son.

¿Fue útil?

Solución

Para aquellos interesados en la solución terminé con...sigue leyendo.

Terminé yendo con el Candidato 1 debido a la fácil tiempo de desarrollo y la familiaridad que tienen con C#/ADO.NET/SQL Server.He creado un C# Servicio de Windows para llamar a un procedimiento almacenado dentro de un Timer_Elapsed evento (algo bastante estándar).

Aquí es el valor de la proc almacenado el servicio está llamando:

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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top