yellow and brown duck cartoon character - Fear of time bombs as an DBA
|

SQL Server „Time Bombs“ – Typische versteckte Probleme

This post might contain affiliate links. We may earn a commission if you click and make a purchase. Your support is appreciated!

Vielen Dank an DallasDBAs für die Inspiration – Jeder DBA kennt es: Ein SQL Server läuft monatelang problemlos – bis plötzlich ein unerwartetes Problem auftritt, das den Betrieb stört. Diese versteckten „Time Bombs“ sind tückisch, weil sie oft unbemerkt bleiben, bis sie eskalieren. In diesem Beitrag zeige ich dir einige typische SQL Server-Probleme, die irgendwann explodieren können – und wie du sie rechtzeitig entschärfst.

1. Auto-Growth auf Standardwerten belassen

SQL Server-Datenbanken wachsen – das ist normal. Doch wenn die Auto-Growth-Einstellungen nicht optimiert sind, kann es zu massiven Performance-Einbrüchen kommen.

Problem:

  • Standardmäßig wächst die Datenbank in kleinen Schritten (1 MB für Daten, 10% für Logs), was bei stark wachsenden Tabellen zu einer hohen Fragmentierung führt.
  • Plötzlicher Speicherplatzmangel, wenn das Laufwerk unerwartet voll wird.

Lösung:

  • Setze das Auto-Growth auf feste Werte statt Prozentangaben, z. B. 512 MB oder 1 GB.
  • Überwache die Datenbankgröße regelmäßig beispielsweise mit:
    SELECT name, size * 8 / 1024 AS SizeMB FROM sys.master_files;

Tipp: Falls deine Datenbank plötzlich stoppt, prüfe das Error Log – SQL Server kann nicht mehr schreiben, wenn der Speicherplatz voll ist!


2. Nicht optimierte Wartungspläne

Regelmäßige Wartung hält deine Datenbank gesund – aber wenn sie schlecht konfiguriert ist, kann sie mehr schaden als helfen.

Problem:

  • Index-Reorganisation und -Rebuild werden nicht regelmäßig durchgeführt → Fragmentierte Indizes verlangsamen Abfragen.
  • Statistiken sind veraltet, was zu schlechten Query-Plänen führt.
  • Log-Dateien wachsen unkontrolliert, weil kein regelmäßiges Log-Backup existiert.

Lösung:

  • Verwende Ola Hallengren’s Maintenance Solution für automatisierte Wartung.
    EXECUTE dbo.IndexOptimize
    @Databases = 'USER_DATABASES',
    @FragmentationLow = NULL,
    @FragmentationMedium = 'INDEX_REORGANIZE,INDEX_REBUILD_ONLINE,INDEX_REBUILD_OFFLINE',
    @FragmentationHigh = 'INDEX_REBUILD_ONLINE,INDEX_REBUILD_OFFLINE',
    @FragmentationLevel1 = 5,
    @FragmentationLevel2 = 30

  • Prüfe veraltete Statistiken:
    SELECT name, STATS_DATE(object_id, stats_id) AS LastUpdated FROM sys.stats;

Tipp: Plane Wartungsjobs außerhalb der Hauptlastzeiten, um Performance-Probleme zu vermeiden.


3. Job-Fehlermeldungen werden ignoriert

Ein SQL Server-Agent-Job läuft täglich – aber niemand merkt, wenn er plötzlich fehlschlägt. Fehlermeldungen landen oft in der Versenkung.

Problem:

  • Wichtige Jobs wie Index-Wartung, Backups oder Replikation schlagen fehl, ohne dass jemand es bemerkt.
  • Fehler häufen sich, bis sie zu einem kritischen Problem führen.

Lösung:

  • Konfiguriere SQL Server-Agent-Alerts, um per E-Mail benachrichtigt zu werden:
    EXEC msdb.dbo.sp_add_alert @name = 'Backup Failed', @message_id = 18210, @severity = 16, @notification_message = 'Backup fehlgeschlagen!';
  • Prüfe fehlgeschlagene Jobs regelmäßig mit:SELECT name, last_run_outcome FROM msdb.dbo.sysjobs;

Tipp: Nutze DBMail, um kritische Fehler automatisch an dein DBA-Team zu senden.


4. Fehlende oder veraltete Backups

Ein Backup ist nur dann nützlich, wenn es aktuell und wiederherstellbar ist! Zu viele Datenbanken laufen mit fehlerhaften oder fehlenden Sicherungen.

Problem:

  • Backups sind alt oder fehlen komplett.
  • Niemand testet, ob die Wiederherstellung überhaupt funktioniert.
  • Der Recovery Model ist nicht auf die Geschäftsanforderungen abgestimmt.

Lösung:

  • Prüfe den letzten Backup-Zeitpunkt:
    SELECT database_name, MAX(backup_finish_date) FROM msdb.dbo.backupset GROUP BY database_name;
  • Teste regelmäßig eine Wiederherstellung auf einem Testsystem.
  • Stelle sicher, dass das Recovery Model (Full, Simple, Bulk-Logged) korrekt eingestellt ist.

Tipp: Automatisiere dein Backup mit:

EXECUTE dbo.DatabaseBackup
   @Databases = 'USER_DATABASES',
   @Directory = 'C:\Backup',
   @BackupType = 'FULL',
   @Verify = 'Y',
   @Compress = 'Y',
   @CheckSum = 'Y',
   @CleanupTime = 24

Fazit: Proaktive Kontrolle statt böse Überraschungen

SQL Server „Time Bombs“ können deinen Betrieb schwer beeinträchtigen – doch mit präventiven Maßnahmen kannst du sie entschärfen:

  • Auto-Growth anpassen, um Fragmentierung zu verringern.
  • Wartung optimieren, um Indizes und Statistiken aktuell zu halten.
  • Job-Fehler überwachen, damit kritische Prozesse nicht unbemerkt ausfallen.
  • Regelmäßige Backups und Wiederherstellungstests durchführen.

Profi-Tipp: Aktiviere die SQL Server Mails für bestimmte Fehler- bzw Statusmeldungen, um immer auf dem Laufenden zu sein und zeitnah informiert zu werden.

Hast du schon einmal eine dieser „Time Bombs“ entschärfen müssen? Teile deine Erfahrungen in den Kommentaren! 😊

This post might contain affiliate links. We may earn a commission if you click and make a purchase. Your support is appreciated!

Ähnliche Beiträge

Schreibe einen Kommentar

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

Diese Seite verwendet Akismet, um Spam zu reduzieren. Erfahre, wie deine Kommentardaten verarbeitet werden..