Kim Torgersen


Lista tabeller efter storlek

article feature image


Lista tabeller i aktuell databas, efter storlek fallande.

SELECT
    s.name AS SchemaName,
    t.name AS TableName,
    MAX(p.rows) AS RowCounts,
    SUM(a.total_pages) * 8 AS TotalSpaceKB,
    CONVERT(numeric(38, 2),
      ROUND(
        ((SUM(a.total_pages) * 8) / 1024.00),
        2
      )
    ) AS TotalSpaceMB,
    CONVERT(numeric(38, 2),
      ROUND(
        ((SUM(a.total_pages) * 8) / 1024.00 / 1024.00),
        2
      )
    ) AS TotalSpaceGB,
    CONVERT(numeric(38, 2),
      ROUND(
        ((SUM(a.total_pages) - SUM(a.used_pages)) * 8) / 1024.00,
        2
      )
    ) AS UnusedSpaceMB
FROM
    sys.tables t
    INNER JOIN sys.indexes i ON
        t.object_id = i.object_id
    INNER JOIN sys.partitions p ON
        i.object_id = p.object_id AND
        i.index_id = p.index_id
    INNER JOIN sys.allocation_units a ON
        p.partition_id = a.container_id
    LEFT OUTER JOIN sys.schemas s ON
        t.schema_id = s.schema_id
WHERE
    t.is_ms_shipped = 0 AND
    i.object_id > 255 AND
    a.total_pages > 0
GROUP BY
    t.name,
    s.name
ORDER BY
    SUM(a.total_pages) DESC,
    MAX(p.rows) DESC,
    s.name,
    t.name;