Frage

Wir haben einen alten SQL Server 2000 Computer, auf dem eine Reihe von Jobs über Nacht laufen. Gelegentlich nach Serverwartung durchgeführt wird und die Maschine neu gestartet wird, einige SQL-Komponenten kommen nicht mit dem OS-up (auch wenn sie dies tun sind so konfiguriert). Also, bevor unsere nächtlichen Arbeitsplätze sollen laufen, möchte ich (von einem entfernten Rechner) einige Prüfungen laufen, um zu sehen, ob SQL Server, SQL Server-Agent, und der SQL Server OLAP Dienst ausgeführt werden. Ich habe ein paar Dinge gefunden, wie sie scheinen, sollten funktionieren, aber ich frage mich, ob die Experten in dieser Gemeinschaft, um die Qualität und Zuverlässigkeit der einzelnen Ansätze kommentieren. Ich kann als diese app kodieren entweder eine VBS-Datei läuft über den Windows Geplante Tasks oder einen C # Windows-Dienst erstellen.

Candidate 1: Führen Sie eine Abfrage gegen master..sysprocesses und Blick in die program_name Spalte für die jeweiligen Prozesse erwarte ich zu finden.

Candidate 2: Führen Sie eine Abfrage gegen master..xpcmd_shell wie folgt:

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

Dann sucht 'STATE: 4 RUNNING' in den Ergebnissen

Candidate 3: Unter Verwendung des .NET Framework, suchen Sie nach dem Prozess wie folgt aus: Überprüfen Sie, ob ein Prozess auf einem läuft Remote-System mit C #

Das ist etwas, das wirklich braucht nur einmal am Tag zu laufen und eine E-Mail-Benachrichtigung, wenn eine der Prozesse auszusenden, die ausgeführt werden, sollten nicht.

War es hilfreich?

Lösung

Für Interessenten in der Lösung, die ich am Ende mit ... lesen Sie weiter.

Ich landete mit dem Candidate 1 geht aufgrund der einfachen Entwicklungszeit und Vertrautheit Ich habe mit C # / ADO.NET / SQL Server. Ich habe einen C # Windows-Dienst eine gespeicherte Prozedur in einem Timer_Elapsed Ereignisse zu nennen (ziemlichen Standard).

Hier ist die Eingeweide des gespeicherten proc der Dienst ruft:

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')
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top