SQL Server üstlendiği rol gereği sürekli veri kaydı alan bir sistem ve üzerinde kurulu olduğu disk boyutunun belli aralıklarla kontrol edilmesi gerekmektedir. Yazımızda SQL Server veri tabanlarının üzerinde kurulu bulunduğu disklerin boş alanının tespit edilmesini üç yöntem ile inceliyor olacağız.
Birinci Yöntem
Bu yöntem ile sunucuda bulunan bütün disklerin boş alanı MB cinsinden sorgulanır.
EXEC MASTER..xp_fixeddrives
İkinci Yöntem
Bu yöntem de üzerinde veri tabanı dosyalarının olduğu disklerin boş alanı sorgulanıyor. Örnekte “C” ve “E” disklerinde veri tabanı dosyaları bulunuyor, bu sebeple yukarıdaki örnekte görünen “D” diski ile ilgili bilgi bulunmamaktadır.
SELECT DISTINCT dovs.logical_volume_name AS LogicalName,
dovs.volume_mount_point AS Drive,
CONVERT(INT,dovs.available_bytes/1048576.0) AS FreeSpaceInMB
FROM sys.master_files mf
CROSS APPLY sys.dm_os_volume_stats(mf.database_id, mf.FILE_ID) dovs
ORDER BY FreeSpaceInMB ASC
GO
Üçüncü Yöntem
Bu yöntem ikinci yöntem ile aynı çalışmaktadır. Fark olarak her bir veri tabanı ve üzerinde bulunduğu diskin boyutunu farkı satırda vermektedir.
SELECT DISTINCT DB_NAME(dovs.database_id) DBName,
dovs.logical_volume_name AS LogicalName,
dovs.volume_mount_point AS Drive,
CONVERT(INT,dovs.available_bytes/1048576.0) AS FreeSpaceInMB
FROM sys.master_files mf
CROSS APPLY sys.dm_os_volume_stats(mf.database_id, mf.FILE_ID) dovs
ORDER BY FreeSpaceInMB ASC
GO