Get all databases size

 SELECT
    D.name AS DatabaseName,
    COUNT(*) AS TotalFiles,
    SUM(CASE WHEN F.type = 0 THEN 1 ELSE 0 END) AS DataFiles,
    SUM(CASE WHEN F.type = 1 THEN 1 ELSE 0 END) AS LogFiles,
       --F.physical_name,
    CAST(SUM(CAST(F.size AS BIGINT) * 8.0 / 1024 / 1024) AS DECIMAL(10,2)) AS TotalSizeGB,
    CAST(SUM(CASE WHEN F.type = 0 THEN CAST(F.size AS BIGINT) * 8.0 / 1024 / 1024 ELSE 0 END) AS DECIMAL(10,2)) AS DataSizeGB,
    CAST(SUM(CASE WHEN F.type = 1 THEN CAST(F.size AS BIGINT) * 8.0 / 1024 / 1024 ELSE 0 END) AS DECIMAL(10,2)) AS LogSizeGB,
    CAST(SUM(CAST(F.size AS BIGINT) * 8.0 / 1024) AS DECIMAL(10,2)) AS TotalSizeMB,
    CAST(SUM(CASE WHEN F.type = 0 THEN CAST(F.size AS BIGINT) * 8.0 / 1024 ELSE 0 END) AS DECIMAL(10,2)) AS DataSizeMB,
    CAST(SUM(CASE WHEN F.type = 1 THEN CAST(F.size AS BIGINT) * 8.0 / 1024 ELSE 0 END) AS DECIMAL(10,2)) AS LogSizeMB
FROM
    sys.master_files F
    INNER JOIN sys.databases D ON D.database_id = F.database_id
WHERE
    D.state =-- Only online databases
GROUP BY
    D.name, D.database_id--, F.physical_name
ORDER BY
    TotalSizeGB DESC;



-- More gradual
SELECT
    D.name AS DatabaseName,
    COUNT(*) AS TotalFiles,
    SUM(CASE WHEN F.type = 0 THEN 1 ELSE 0 END) AS DataFiles,
    SUM(CASE WHEN F.type = 1 THEN 1 ELSE 0 END) AS LogFiles,
       F.physical_name,
       F.name,
    CAST(SUM(CAST(F.size AS BIGINT) * 8.0 / 1024 / 1024) AS DECIMAL(10,2)) AS TotalSizeGB,
    CAST(SUM(CASE WHEN F.type = 0 THEN CAST(F.size AS BIGINT) * 8.0 / 1024 / 1024 ELSE 0 END) AS DECIMAL(10,2)) AS DataSizeGB,
    CAST(SUM(CASE WHEN F.type = 1 THEN CAST(F.size AS BIGINT) * 8.0 / 1024 / 1024 ELSE 0 END) AS DECIMAL(10,2)) AS LogSizeGB,
    CAST(SUM(CAST(F.size AS BIGINT) * 8.0 / 1024) AS DECIMAL(10,2)) AS TotalSizeMB,
    CAST(SUM(CASE WHEN F.type = 0 THEN CAST(F.size AS BIGINT) * 8.0 / 1024 ELSE 0 END) AS DECIMAL(10,2)) AS DataSizeMB,
    CAST(SUM(CASE WHEN F.type = 1 THEN CAST(F.size AS BIGINT) * 8.0 / 1024 ELSE 0 END) AS DECIMAL(10,2)) AS LogSizeMB
FROM
    sys.master_files F
    INNER JOIN sys.databases D ON D.database_id = F.database_id
WHERE
    D.name in ('IvyDB-Futures', 'dataOptionV2')  -- Only online databases
GROUP BY
    D.name, D.database_id, F.physical_name, F.name
ORDER BY
    DatabaseName;

Comments