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:
1SELECT SUM(reserved_page_count)*8.0/1024 + SUM(lob_reserved_page_count)*8.0/1024as MB
2FROM 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:
1SELECT SUM(reserved_page_count)*8.0/1024 + SUM(lob_reserved_page_count)*8.0/1024as MB
2from sys.dm_db_partition_stats, sys.objects
3where sys.dm_db_partition_stats.object_id = sys.objects.object_id
4group 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 yMaxSizeInBytes:
1SELECT DATABASEPROPERTYEX (DB_Name(), 'Edition'as Edition,
2CONVERT(BIGINT,DATABASEPROPERTYEX (DB_Name(), 'MaxSizeInBytes')) / 1073741824 as'GB'
Espero que sea de utilidad :D
¡Saludos!

No hay comentarios:

Publicar un comentario