CREATE TABLE #spaceused
(name varchar(20), rows int, reserved varchar(20),
data varchar(20), index_size varchar(20), unused varchar(20))
DECLARE @TableName varchar(200)
SET NOCOUNT ON
DECLARE space_cursor CURSOR FOR
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
OPEN space_cursor
FETCH NEXT FROM space_cursor
INTO @TableName
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT #spaceused
EXEC sp_spaceused @TableName
-- Get the next author.
FETCH NEXT FROM space_cursor
INTO @TableName
END
CLOSE space_cursor
DEALLOCATE space_cursor
SET NOCOUNT OFF
PRINT 'Total Space Used'
select sum(convert(int, LEFT(reserved, LEN(reserved) - 3))) 'Reserved',
sum(convert(int, LEFT(data, LEN(data) - 3))) 'Data'
from #spaceused
PRINT 'Odd shaped tables'
SELECT convert(int, LEFT(reserved, LEN(reserved) - 3)) AS 'Size', * from #spaceused
WHERE convert(int, LEFT(data, LEN(data) - 3)) > (rows * 8.096)
AND rows > 0
ORDER BY Size DESC
PRINT 'All tables'
SELECT convert(int, LEFT(reserved, LEN(reserved) - 3)) AS 'Size', * from #spaceused
ORDER BY Size DESC
DROP TABLE #spaceused
---------------