2010-03-29 6 views
2

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

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

кандидат 2: Выполнить запрос к master..xpcmd_shell так:

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

Тогда ищите 'СОСТОЯНИИ: 4 RUNNING' в результатах

кандидат 3: Используя .NET Framework, выполните поиск следующего процесса: Check if a process is running on a remote system using C#

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

ответ

1

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

Я закончил с кандидатом 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') 
+0

А идея, если я не могу подключиться к базе данных SQL вообще, предполагается, SQL Server не работает, и поэтому SQLAgent также не работает. Поэтому я отправляю уведомление по электронной почте. Если я могу подключиться к базе данных SQL, я запустил этот хранимый процесс и проверил, что возвращаются записи SQLAgent и MSSAS. Если нет, я отправляю уведомление по электронной почте о том, чего не хватает. – jamauss