SQL-Server – Festplattenkapazität selektieren

Ein kurzes aber ziemlich wichtiges Statement, wenn die Kapazitäten von einem oder mehreren SQL-Servern beobachtet werden soll. In meinem Fall läuft täglich ein Job, welcher diverse Parameter prüft und aus den gesammelten Daten eine Staus-E-Mail erzeugt. Neben einer Auflistung der SQL-Agents (aktiv, erfolgreich, fehlerhaft) führe ich mir jetzt endlich auch den freien Speicherplatz auf.

;WITH bytes
AS (
 SELECT DISTINCT s.volume_mount_point
 ,cast(s.available_bytes / 1048576.0 AS DECIMAL(20, 2)) AS verfuegbar
 ,cast(s.total_bytes / 1048576.0 AS DECIMAL(20, 2)) AS total
 FROM sys.master_files f
 CROSS APPLY sys.dm_os_volume_stats(f.database_id, f.file_id) s
 )
SELECT volume_mount_point
 ,verfuegbar
 ,total
 ,cast((verfuegbar / total) * 100 AS DECIMAL(20, 2)) as prozent
FROM bytes
ORDER BY volume_mount_point

Die Ausgabe könnte dann z.B. so aussehen:

volume_mount_point	verfuegbar	total		prozent
C:\			8257.02		40857.00	20.21
D:\			32284.75	48073.00	67.16