Obtener el tamaño usado y límite en las bases de datos de SQL Azure a través de sentencias SQL

Una de las tareas más comunes cuando trabajamos con las bases de datos de SQL Azure podría ser la necesidad de recuperar el tamaño usado de la base de datos y el límite de la misma para determinar si ha llegado el momento de escalar. Esta información es claramente visible desde el portal de Windows Azure:

Uno de los desafíos que nos podemos encontrar al trabajar con SQL Azure es la falta de algunos de los procedimientos almacenados, como por ejemplo uno de los más frecuentes:

Para poder recuperar el espacio usado por una base de datos en concreto podemos utilizar la siguiente sentencia SQL:

SELECT SUM(reserved_page_count)*8.0/1024 + SUM(lob_reserved_page_count)*8.0/1024 as MB
FROM sys.dm_db_partition_stats
Si por otro lado quisiéramos conocer cuánto espacio ocupa cada una de las tablas de la base de datos, podríamos utilizar esta otra:
SELECT sys.objects.name, SUM(reserved_page_count)*8.0/1024 + SUM(lob_reserved_page_count)*8.0/1024 as MB
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

Para finalizar, si necesitáramos saber desde SQL cuál es el tamaño límite y la edición de una base de datos  haríamos uso de DATABASEPROPERTYEX para recuperar los valores de las propiedades Edition y MaxSizeInBytes:

SELECT DATABASEPROPERTYEX (DB_Name(), 'Edition') as Edition,
CONVERT(BIGINT,DATABASEPROPERTYEX (DB_Name(), 'MaxSizeInBytes')) / 1073741824 as 'GB'

Espero que sea de utilidad 😀

¡Saludos!