SQL Server Datenbankwachstum analysieren: Monatliche Größenveränderungen

Das Verständnis des Datenbankwachstums ist grundlegend für Kapazitätsplanung und Storage-Management. Diese Queries analysieren das monatliche Wachstum von SQL Server-Datenbanken über historische Backup-Metadaten.

Monatliches Wachstum aus Backup-History

SELECT
    database_name,
    YEAR(backup_start_date) AS year,
    MONTH(backup_start_date) AS month,
    AVG(backup_size / 1024.0 / 1024.0) AS avg_db_size_mb,
    MAX(backup_size / 1024.0 / 1024.0) AS max_db_size_mb
FROM msdb.dbo.backupset
WHERE type = 'D'  -- Full Backups
  AND database_name = 'MyDatabase'
GROUP BY database_name, YEAR(backup_start_date), MONTH(backup_start_date)
ORDER BY year, month;

Aktuelles Datenbankwachstum (alle DBs)

-- Aktuelle Größe aller Datenbanken mit Dateigröße
SELECT
    d.name,
    SUM(CASE WHEN f.type = 0 THEN f.size * 8.0 / 1024 ELSE 0 END) AS data_size_mb,
    SUM(CASE WHEN f.type = 1 THEN f.size * 8.0 / 1024 ELSE 0 END) AS log_size_mb,
    SUM(f.size * 8.0 / 1024) AS total_size_mb
FROM sys.databases d
JOIN sys.master_files f ON d.database_id = f.database_id
WHERE d.database_id > 4  -- Systemdatenbanken ausschließen
GROUP BY d.name
ORDER BY total_size_mb DESC;

Für proaktives Storage-Management: Ein Wachstumsalert bei Überschreitung eines Schwellenwerts (z.B. 80% des Plattenplatzes) lässt sich mit einem SQL Agent Job kombinieren, der diese Query täglich prüft und bei Bedarf E-Mails versendet.