SQL Server Scripts
- Go
back to the list of scripts.
Calcluate table sizes
Calcuates how much space is used by the user tables, inlcuding avergae row size if known.
SET NOCOUNT ON
CREATE TABLE #TBLSize
(
Tblname varchar(80),
TblRows int,
TblReserved varchar(80),
TblData varchar(80),
TblIndex_Size varchar(80),
TblUnused varchar(80),
TblRowSize varchar(10) null)
DECLARE @DBname varchar(80)
DECLARE @tablename varchar(80)
SELECT @DBname = DB_NAME(DB_ID())
DECLARE TblName_cursor CURSOR FOR
SELECT NAME
FROM sysobjects
WHERE xType = 'U'
OPEN TblName_cursor
FETCH NEXT FROM TblName_cursor
INTO @tablename
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO #tblSize(Tblname, TblRows, TblReserved, TblData, TblIndex_Size, TblUnused)
EXEC Sp_SpaceUsed @tablename
-- Get the next table.
FETCH NEXT FROM TblName_cursor
INTO @tablename
END
CLOSE TblName_cursor
DEALLOCATE TblName_cursor
UPDATE #tblSize
SET tblRowSize = CASE(CAST(tblRows AS INT))
WHEN 0 THEN 0
ELSE (CAST(LEFT(TblReserved, CHARINDEX(' KB', TblReserved)) as int) * 1024) / CAST(tblRows AS INT)
END
SELECT CAST(Tblname as Varchar(30)) AS 'Table',
CAST(TblRows as Varchar(14)) AS 'Row Count',
CASE(tblRowSize)
WHEN 0 THEN 'n/a'
ELSE CAST(TblRowSize AS Varchar(10)) + ' bytes'
END AS 'Avg Row Size',
CAST(LEFT(TblReserved, CHARINDEX(' KB', TblReserved)) as int) AS 'Total Space (KB)',
CAST(TblData as Varchar(14)) AS 'Data Space',
CAST(TblIndex_Size as Varchar(14)) AS 'Index Space',
CAST(TblUnused as Varchar(14)) AS 'Unused Space'
FROM #tblSize
Order by 'Total Space (KB)' Desc
DROP TABLE #TblSize
(c)
Unknown source, but found on several websites and newsgroups.