Information Systems Design and Development

List Table Sizes for a Database

I don't remember where I stole this from.  Please email me if you're the author and I'll credit you

 

-- table sizes for current database
-- create the temporary table...
CREATE TABLE #tblResults
(
   [name]             nvarchar(255),
   [rows]             int,
   [reserved]         varchar(18),
   [reserved_int]     int default(0),
   [data]             varchar(18),
   [data_int]         int default(0),
   [index_size]       varchar(18),
   [index_size_int]   int default(0),
   [unused]           varchar(18),
   [unused_int]       int default(0)
)

-- Populate the temp table...
EXEC sp_MSforeachtable @command1=
         "INSERT INTO #tblResults
           ([name],[rows],[reserved],[data],[index_size],[unused])
          EXEC sp_spaceused '?'"
   
-- Strip out the " KB" portion from the fields
UPDATE #tblResults SET
   [reserved_int]   = CAST(SUBSTRING([reserved],
                        1, CHARINDEX(' ', [reserved])) AS int),
   [data_int]       = CAST(SUBSTRING([data],
                        1, CHARINDEX(' ', [data])) AS int),
   [index_size_int] = CAST(SUBSTRING([index_size],
                        1, CHARINDEX(' ', [index_size])) AS int),
   [unused_int]     = CAST(SUBSTRING([unused],
                        1, CHARINDEX(' ', [unused])) AS int)
   
-- Return the results...
SELECT * FROM #tblResults ORDER BY [rows] DESC;
DROP TABLE #tblResults;