mlorvand / FreeSpaceDrive

This query show your server all drives status with capacity counter and percentage value

Repository from Github https://github.commlorvand/FreeSpaceDriveRepository from Github https://github.commlorvand/FreeSpaceDrive

💾 SQL Server Disk Space Monitor

🇮🇷 فارسی | 🇬🇧 English | 🇸🇦 العربية


🇮🇷 فارسی

🎯 هدف

این کوئری برای مانیتور کردن فضای دیسک در سرور SQL Server طراحی شده است.
با استفاده از DMV sys.dm_os_volume_stats و sys.master_files، اطلاعات حجم کل، فضای آزاد، فضای مصرف‌شده و درصد استفاده از هر درایو را نمایش می‌دهد.

🧩 ویژگی‌ها

  • نمایش حجم کل، فضای آزاد و فضای مصرف‌شده (به GB)
  • محاسبه درصد استفاده و درصد فضای آزاد
  • تعیین وضعیت هر درایو (Good, Warning, Critical)
  • مرتب‌سازی بر اساس کمترین فضای آزاد

⚙️ نحوه استفاده

کافیست کوئری زیر را در محیط SQL Server Management Studio (SSMS) اجرا کنید:

WITH DiskSpace AS (
    SELECT DISTINCT 
        vs.volume_mount_point AS Drive,
        vs.total_bytes,
        vs.available_bytes
    FROM sys.master_files mf
    CROSS APPLY sys.dm_os_volume_stats(mf.database_id, mf.file_id) vs
)
SELECT 
    Drive,
    FORMAT(total_bytes / (1024.0 * 1024 * 1024), 'N2') + ' GB' AS TotalSpace,
    FORMAT(available_bytes / (1024.0 * 1024 * 1024), 'N2') + ' GB' AS FreeSpace,
    FORMAT((total_bytes - available_bytes) / (1024.0 * 1024 * 1024), 'N2') + ' GB' AS UsedSpace,
    FORMAT((total_bytes - available_bytes) * 100.0 / total_bytes, 'N2') + '%' AS UsedPercentage,
    FORMAT(available_bytes * 100.0 / total_bytes, 'N2') + '%' AS FreePercentage,
    CASE 
        WHEN (available_bytes * 100.0 / total_bytes) < 10 THEN 'Critical'
        WHEN (available_bytes * 100.0 / total_bytes) < 20 THEN 'Warning' 
        ELSE 'Good'
    END AS Status
FROM DiskSpace
ORDER BY (available_bytes * 100.0 / total_bytes) ASC;
📊 خروجی نمونه
Drive	TotalSpace	FreeSpace	UsedSpace	UsedPercentage	FreePercentage	Status
C:\	500 GB	320 GB	180 GB	36.00%	64.00%	Good
D:\	100 GB	15 GB	85 GB	85.00%	15.00%	Warning
E:\	200 GB	8 GB	192 GB	96.00%	4.00%	Critical

🇬🇧 English
🎯 Purpose
This query helps you monitor disk usage on your SQL Server instance.
It retrieves volume information from sys.dm_os_volume_stats and sys.master_files to display total, free, and used space per drive, including percentage usage.

🧩 Features
Shows total, free, and used space (in GB)

Calculates usage and free percentages

Displays drive status (Good, Warning, Critical)

Orders drives by free space percentage

⚙️ How to Use
Run this query in SQL Server Management Studio (SSMS):

sql
Copy code
-- Same query as above
📊 Example Output
Drive	TotalSpace	FreeSpace	UsedSpace	Used%	Free%	Status
C:\	500 GB	320 GB	180 GB	36.00%	64.00%	Good
D:\	100 GB	15 GB	85 GB	85.00%	15.00%	Warning
E:\	200 GB	8 GB	192 GB	96.00%	4.00%	Critical

🇸🇦 العربية
🎯 الهدف
هذا الاستعلام مخصص لمراقبة مساحة الأقراص على خادم SQL Server.
يستخدم العرضين الديناميكيين sys.dm_os_volume_stats و sys.master_files لعرض الحجم الكلي، والمساحة الحرة، والمستخدمة، ونسبة الاستخدام لكل قرص.

🧩 الميزات
يعرض الحجم الكلي والمساحة الحرة والمستخدمة (بـ GB)

يحسب النسب المئوية للاستخدام والمساحة الحرة

يحدد حالة كل قرص (Good، Warning، Critical)

يرتب النتائج حسب أقل مساحة حرة

⚙️ طريقة الاستخدام
قم بتشغيل الاستعلام في SQL Server Management Studio (SSMS):

sql
Copy code
-- نفس الاستعلام أعلاه
📊 مثال على المخرجات
القرص	المساحة الكلية	المساحة الحرة	المساحة المستخدمة	نسبة الاستخدام	نسبة الفراغ	الحالة
C:\	500 GB	320 GB	180 GB	‎36.00%‎	‎64.00%‎	Good
D:\	100 GB	15 GB	85 GB	‎85.00%‎	‎15.00%‎	Warning
E:\	200 GB	8 GB	192 GB	‎96.00%‎	‎4.00%‎	Critical

🧠 نکته / Note / ملاحظة
این کوئری نیازی به دسترسی ادمین ندارد و روی تمام نسخه‌های SQL Server از 2012 به بعد قابل اجراست.
Works on all SQL Server editions (2012+).
يعمل على جميع إصدارات SQL Server من 2012 فصاعدًا.

yaml
Copy code

About

This query show your server all drives status with capacity counter and percentage value