Jak w MS SQL sprawdzić ile zajmują poszczególne bazy danych

Objętość serwera MS SQL potrafi wymknąć się spod kontroli gdy jednocześnie utrzymuje się na nim wiele kopii tej samej bazy bazy. W takiej sytuacji warto sprawdzić ich objętość, co pomoże w wyznaczeniu potencjalnych kandydatów do usunięcia lub archiwizacji.

I tak jeżeli bazy zlokalizowane są na tradycyjnym serwerze SQL wystarczy skorzystać z zapytania:

select d.name as DbName, m.size * 8 / 1024 as DbSizeInMB
from sys.master_files m JOIN sys.databases d ON d.database_id = m.database_id and m.type = 0
order by DbSizeInMB desc

Sytuacja wygląda inaczej gdy korzysta się z Azure Databases i zamiast powyższego zapytania trzeba skorzystać z:

select db.name as DbName,
    (select top 1 s.storage_in_megabytes from sys.resource_stats s where s.database_name = db.name) as DbSizeInMB
from sys.databases db 
order by DbSizeInMB desc