En un artículo anterior mostraba como mostrar las tablas de una base de datos con sus respectivos tamaños. Aquí muestro otro script que hace lo mismo, además de mostrar solo las columnas más importantes, consiste en crear una tabla temporal en donde guardamos los datos, para que luego podamos procesarla de alguna manera.

CREATE TABLE #temp (
    Tabla sysname ,
    Registros INT,
    Columnas VARCHAR(50),
    Tamaño VARCHAR(50),
    index_size VARCHAR(50),
    unused_size VARCHAR(50))

SET NOCOUNT ON
INSERT #temp
EXEC sp_msforeachtable 'sp_spaceused ''?'''
  SELECT a.Tabla, a.Registros, COUNT(*) AS Columnas, a.Tamaño 
    FROM #temp a
    INNER JOIN information_schema.columns b
    ON a.Tabla collate database_default = 
        b.table_name collate database_default
    GROUP BY a.Tabla, a.Registros, a.Tamaño
    ORDER BY CAST(REPLACE(a.Tamaño, ' KB', '') AS integer) DESC

DROP TABLE #temp

Sql ServerAntes de borrar la tabla temporal se podría usar para alguna otra operación. Espero que os sea de utilidad.