¿Cuánto ocupan mis tablas y mis índices en Sql Azure (y no Azure)?
El tamaño de la base de datos, siempre es importante, en Sql Azure más si cabe, pues afecta directamente a nuestro bolsillo.
Hace bastante tiempo publiqué un script, que se volvió bastante popular, que permite responder la pregunta ¿Cuanto ocupan mis tablas y mis vistas indexadas en Sql Server?, este script hace uso del procedimiento almacenado del sistema sp_spaceused que por desgracia no está disponible en SQL Azure, haciendo que el script anterior no funcione. Así que me he puesto manos a la obra y he hecho una versión similar que si que funciona en SQL Azure (por su puesto en un SQL Server ‘on premise’).
SELECT
sys.objects.name AS Name, SUM(reserved_page_count) * 8.0 / 1024 AS [Reserved in MB], SUM(used_page_count) * 8.0 / 1024 AS [Used in MB], MAX(row_count) AS [Number of rows]
FROM
sys.dm_db_partition_stats, sys.objects
WHERE
sys.dm_db_partition_stats.object_id = sys.objects.object_id
GROUP BY sys.objects.name
UNION ALL
SELECT
sys.indexes.name AS Name, SUM(reserved_page_count) * 8.0 /1024 AS [Reserved in MB], SUM(used_page_count) * 8.0 / 1024 AS [Used in MB], MAX(row_count) AS [Number of rows]
FROM
sys.dm_db_partition_stats, sys.indexes
WHERE
sys.dm_db_partition_stats.object_id = sys.indexes.object_id
AND sys.dm_db_partition_stats.index_id = sys.indexes.index_id
AND sys.dm_db_partition_stats.index_id > 0
GROUP BY sys.indexes.name
ORDER BY 2 DESC
Espero que os sea útil, un saludo.