Files
sql-scripts/DBG - get all tables size.sql
2023-10-23 11:12:58 +02:00

48 lines
2.0 KiB
SQL

SELECT t.name AS TableName,
s.name AS SchemaName,
-- [i].[name] AS indexName,
MAX([p].[rows]) AS [rowCount],
SUM([a].[total_pages]) * 8 AS TotalSpaceKB,
CAST(ROUND(((SUM([a].[total_pages]) * 8) / 1024.00), 2) AS NUMERIC(36, 2)) AS TotalSpaceMB,
SUM([a].[used_pages]) * 8 AS UsedSpaceKB,
CAST(ROUND(((SUM([a].[used_pages]) * 8) / 1024.00), 2) AS NUMERIC(36, 2)) AS UsedSpaceMB,
(SUM([a].[total_pages]) - SUM([a].[used_pages])) * 8 AS UnusedSpaceKB,
CAST(ROUND(((SUM([a].[total_pages]) - SUM([a].[used_pages])) * 8) / 1024.00, 2) AS NUMERIC(36, 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 i.object_id > 255
AND i.index_id IN ( 0, 1 )
AND t.name NOT LIKE 'dt%'
AND [t].[is_ms_shipped] = 0
AND i.object_id > 255
GROUP BY t.name,
s.name
ORDER BY [TotalSpaceMB] DESC
RETURN
SELECT t.name AS TableName,
MAX([p].[rows]) AS RowCounts,
(SUM([a].[total_pages]) * 8) / 1024.0 AS TotalSpaceMB,
(SUM([a].[used_pages]) * 8) / 1024.0 AS UsedSpaceMB,
(SUM([a].[data_pages]) * 8) / 1024.0 AS DataSpaceMB
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]
WHERE i.object_id > 255
AND i.index_id IN ( 0, 1 )
GROUP BY t.name
ORDER BY TotalSpaceMB DESC;