Wenn der SQL-Dienst steht – und keiner merkt was

SQL Server läuft oft still vor sich hin.
Bis er’s nicht mehr tut.
Und dann kommt das große Suchen.

Dabei kannst Du Dir viel Ärger sparen –
wenn Du rechtzeitig hinschaust.
Oder hinschauen lässt.

Ich zeig Dir, wie ich Monitoring und Alerts aufsetze.
Einfach. Robust. Ohne Toolsalat.

Was Du im Blick haben solltest

  • Dienstverfügbarkeit
  • Datenbankzustände
  • Speicherplatz
  • lange laufende Abfragen
  • fehlgeschlagene Jobs
  • Log-Wachstum
  • Deadlocks
  • IO-Engpässe
  • Login-Fehler

Wenn davon etwas länger schiefläuft,
ist der Stillstand nur eine Frage der Zeit.

Schritt 1: SQL Server Agent konfigurieren

Der SQL Server Agent muss laufen.
Sonst gibt’s keine Alerts.
Starttyp: Automatisch
Berechtigungen: Lokales System oder spezieller Dienst-User

Schritt 2: Database Mail einrichten

EXEC msdb.dbo.sysmail_add_account_sp
    @account_name = 'MonitoringMail',
    @description = 'SQL Mail',
    @email_address = 'sqlserver@firma.de',
    @display_name = 'SQL Server',
    @mailserver_name = 'smtp.firma.de';

EXEC msdb.dbo.sysmail_add_profile_sp
    @profile_name = 'SQLMonitoring';

EXEC msdb.dbo.sysmail_add_profileaccount_sp
    @profile_name = 'SQLMonitoring',
    @account_name = 'MonitoringMail',
    @sequence_number = 1;

Dann aktivieren:

EXEC msdb.dbo.sp_set_sqlagent_properties
    @email_save_in_sent_folder = 1,
    @databasemail_profile = 'SQLMonitoring';

Schritt 3: Operator anlegen

EXEC msdb.dbo.sp_add_operator
    @name = 'Admin',
    @email_address = 'admin@firma.de';

Damit wissen die Alerts, wen sie anbrüllen sollen.

Schritt 4: Alerts einrichten

Beispiel: SQL Server Fehler 823 (IO-Problem)

EXEC msdb.dbo.sp_add_alert
    @name = 'Fehler 823 IO',
    @message_id = 823,
    @severity = 0,
    @enabled = 1,
    @notification_message = 'IO-Problem im SQL Server erkannt!',
    @job_id = NULL;

EXEC msdb.dbo.sp_add_notification
    @alert_name = 'Fehler 823 IO',
    @operator_name = 'Admin',
    @notification_method = 1; -- Email

Andere wichtige Fehler:

FehlercodeBedeutung
823IO-Fehler (z. B. Festplatte)
824Datenfehler in Seite
825IO-Warnung (mehrfache Versuche)
1205Deadlock

Schritt 5: Jobüberwachung

SQL Server Agent-Job definieren → z. B. tägliches Backup
Fehlerhafte Jobs per Mail melden:

EXEC msdb.dbo.sp_update_job
    @job_name = 'Backup_ERP',
    @notify_level_email = 2, -- Fehler
    @notify_email_operator_name = 'Admin';

Tipp: notify_level_email = 1 meldet auch bei Erfolg.
Das nervt. Nimm besser 2.

Schritt 6: Benutzerdefinierte Prüfungen

Beispiel: Verfügbare Datenbankgröße prüfen

IF EXISTS (
    SELECT * 
    FROM sys.database_files 
    WHERE type_desc = 'ROWS' AND size * 8 / 1024 > 45000 -- MB
)
BEGIN
    EXEC msdb.dbo.sp_send_dbmail
        @profile_name = 'SQLMonitoring',
        @recipients = 'admin@firma.de',
        @subject = 'WARNUNG: Datenbank nähert sich dem Limit',
        @body = 'Bitte DB prüfen. Grenze überschritten.';
END

Am besten regelmäßig per Job ausführen.

Schritt 7: Logging und Verlauf

Wichtige DMVs:

  • sys.dm_os_ring_buffers
  • sys.dm_exec_requests
  • sys.dm_os_waiting_tasks
  • sys.dm_db_log_space_usage

Tägliches Monitoringlog sichern:

SELECT GETDATE() AS Zeitpunkt,
       COUNT(*) AS AktiveVerbindungen
INTO MonitorLog
FROM sys.dm_exec_sessions
WHERE is_user_process = 1;

Oder anhängen mit INSERT INTO MonitorLog.

Schritt 8: Externe Tools (wenn erlaubt)

Wenn Du mehr willst:

  • Zabbix oder CheckMK für Server-Monitoring
  • SQL Sentry oder Redgate SQL Monitor für Deep SQL
  • Grafana + Telegraf + Influx bei echten Nerds

Aber alles steht und fällt mit:
Benachrichtigung und Reaktion.

Mein Setup für KMU-Projekte

BereichLösung
Ausfälle erkennenSQL Agent + Alert auf Fehler 823, 824, 825
MailversandDatabase Mail via internem SMTP
tägliche PrüfungJob für freie DB-Größe und Log-Nutzung
JobüberwachungMails bei Fehlern
ReaktionProtokollpflicht + feste Ansprechperson

Ein SQL Server, der ausfällt, ist nicht das Problem.

Das Problem ist: Wenn Du’s erst am nächsten Morgen merkst.

Monitoring ist keine Kür. Es ist Deine Verantwortung.

Damit aus „plötzlich war alles weg“ nicht wieder ein Wochenend-Drama wird.

Tags:

No responses yet

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert