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:
Fehlercode | Bedeutung |
---|---|
823 | IO-Fehler (z. B. Festplatte) |
824 | Datenfehler in Seite |
825 | IO-Warnung (mehrfache Versuche) |
1205 | Deadlock |
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
Bereich | Lösung |
---|---|
Ausfälle erkennen | SQL Agent + Alert auf Fehler 823, 824, 825 |
Mailversand | Database Mail via internem SMTP |
tägliche Prüfung | Job für freie DB-Größe und Log-Nutzung |
Jobüberwachung | Mails bei Fehlern |
Reaktion | Protokollpflicht + 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.
No responses yet