Ecco una buona sceneggiatura che ho strappato spudoratamente da qui :
use [Insert DB Name]
select
a.FILEID,
[FILE_SIZE_MB] =
convert(decimal(12,2),round(a.size/128.000,2)),
[SPACE_USED_MB] =
convert(decimal(12,2),round(fileproperty(a.name, 'SpaceUsed')/128.000,2)),
[FREE_SPACE_MB] =
convert(decimal(12,2),round((a.size-fileproperty(a.name, 'SpaceUsed'))/128.000,2)) ,
NAME = left(a.NAME,15),
FILENAME = left(a.FILENAME,30)
from
dbo.sysfiles a
Questo è buono perché ti darà lo spazio libero in ogni file DB (potresti avere più file e forse qualcuno lo ha impostato per mettere alcuni oggetti in ciascuno) così come le dimensioni libere.
Ad esempio, hai un file di dati da 4 GB con 3 GB di spazio libero. Forse hai 1 MDF senza molti dati ma un NDF con molti dati. Questa query ti dirà la dimensione libera in ogni file e a quale DB è assegnato quel file. Ricorda di aggiungere tutti i "SPACE_USED_MB" per ciascun DB per ottenere la dimensione totale.
In bocca al lupo!
Modifica:
rimosso un comando non supportato e errato che pensavo di poter fare a meno di pubblicare qui per questa query. :(