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
Antes de borrar la tabla temporal se podría usar para alguna otra operación. Espero que os sea de utilidad.