Aquí hay un buen script que descaradamente arranqué de aquí :
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
Esto es bueno porque le dará el espacio libre en cada archivo DB (es posible que tenga varios archivos y tal vez alguien lo configure para poner algunos objetos en cada uno), así como el tamaño libre.
Por ejemplo, tiene un archivo de datos de 4 GB que tiene 3 GB de espacio libre. Quizás tenga 1 MDF sin muchos datos, pero un NDF con muchos datos. Esta consulta le indicará el tamaño libre en cada archivo y a qué DB está asignado ese archivo. Recuerde agregar todos los 'SPACE_USED_MB' para cada DB para obtener el tamaño total.
¡Buena suerte!
Editar: se
eliminó un comando no compatible y con errores que pensé que podría publicar aquí para esta consulta. :(