¿Existe alguna función integrada/procedimiento almacenado/consulta que sea útil para recuperar información sobre el tamaño de "MiTabla" en la base de datos SQL Server?
Para una sola tabla puede utilizar
sp_spaceused MyTable
Para todas las tablas de una base de datos se puede utilizar con sp_msforeachtable
de la siguiente manera
CREATE TABLE #temp (
table_name sysname ,
row_count INT,
reserved_size VARCHAR(50),
data_size VARCHAR(50),
index_size VARCHAR(50),
unused_size VARCHAR(50))
SET NOCOUNT ON
INSERT #temp
EXEC sp_msforeachtable 'sp_spaceused ''?'''
SELECT a.table_name,
a.row_count,
COUNT(*) AS col_count,
a.data_size
FROM #temp a
INNER JOIN information_schema.columns b
ON a.table_name collate database_default
= b.table_name collate database_default
GROUP BY a.table_name, a.row_count, a.data_size
ORDER BY CAST(REPLACE(a.data_size, ' KB', '') AS integer) DESC
DROP TABLE #temp
En SSMS, haga clic con el botón derecho en Base de datos, seleccione Informes, Informes estándar, Uso de disco por tablas principales.
El informe le dará el número de filas y kilobytes utilizados por tabla.
Eche un vistazo a sys.dm_db_partition_stats (http://msdn.microsoft.com/en-us/library/ms187737.aspx).
Hay algunos ejemplos de consultas en ese enlace y también en http://blogs.msdn.com/b/cindygross/archive/2010/04/02/dmv-series-sys-dm-db-partition-stats.aspx
Puedes modificarlo para adaptarlo a tus necesidades, por ejemplo, filtrar índices no agrupados. Multiplique el número de páginas por 8 para obtener el tamaño en KB, luego divídalo por 2^10 (=1024) para convertirlo a MB si es necesario.
sp_spaceused (http://msdn.microsoft.com/en-us/library/ms188776.aspx) también proporcionará información sobre el tamaño de la tabla.