Una forma sencilla de tener el espacio utilizado de una base de datos SQL Server en un momento dado:

    DATOS: SELECT (sum (size)*8)/1024 FROM nombredelabd.dbo.sysfiles WHERE status & 64 = 0
    USADO: SELECT (sum(used)*8)/1024 FROM nombredelabd.dbo.sysindexes WHERE indid IN (0,1,255)
    LOG: SELECT (sum (size)*8)/1024 FROM nombredelabd.dbo.sysfiles WHERE status & 64 <> 0

Para obtenerlo en una única consulta:

    SELECT 'nombredelabd' AS basededatos,(SELECT (sum (size)*8)/1024 FROM nombredelabd.dbo.sysfiles WHERE status & 64 = 0) datos, (SELECT (sum(used)*8)/1024 FROM nombredelabd.dbo.sysindexes WHERE indid IN (0,1,255)) usado, (SELECT (sum (size)*8)/1024 FROM nombredelabd.dbo.sysfiles WHERE status & 64 <> 0) log

Si queremos tener un pronóstico del crecimiento, sólo será necesario crear un job que cargue los datos en una tabla de históricos.