Лучший способ проверить, запущены ли процессы SQL Server 2000?

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

  •  23-09-2019
  •  | 
  •  

Вопрос

У нас есть старая машина с SQL Server 2000, на которой за ночь выполняется множество заданий.Иногда после выполнения обслуживания сервера и перезагрузки компьютера некоторые компоненты SQL не поддерживают операционную систему (даже если они настроены на это).Поэтому перед запуском наших ночных заданий я хотел бы (с удаленного компьютера) выполнить некоторые проверки, чтобы увидеть, работают ли SQL Server, агент SQL Server и служба SQL Server OLAP.Я нашел несколько вещей, которые, кажется, должны работать, но мне интересно, могут ли эксперты этого сообщества прокомментировать качество и надежность каждого подхода.Я могу закодировать это приложение либо как файл .vbs, запускаемый через запланированные задачи Windows, либо создать службу Windows C#.

Кандидат 1:Выполните запрос к master..sysprocesses и найдите в столбце program_name соответствующие процессы, которые я ожидаю найти.

Кандидат 2:Выполните запрос к master..xpcmd_shell следующим образом:

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

Затем найдите 'STATE:4 БЕГ ' в результатах

Кандидат 3:Используя .NET Framework, найдите этот процесс следующим образом:Проверьте, запущен ли процесс в удаленной системе, используя C#.

Это то, что на самом деле нужно запускать только один раз в день, и оно будет отправлять предупреждение по электронной почте, если какой-либо из процессов, которые должны быть запущены, не работает.

Это было полезно?

Решение

Для тех, кто заинтересован в решении, которое я получил... читайте дальше.

В итоге я выбрал кандидата 1 из-за простоты разработки и знакомства с C#/ADO.NET/SQL Server.Я создал службу Windows C# для вызова хранимой процедуры в событии Timer_Elapsed (довольно стандартный материал).

Вот внутренности сохраненного процесса, который вызывает служба:

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')
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top