Technical Article

Check Used Table Space for User Defined Tables

,

Often SQL Server Database Administrators struggle with hard disk space and constantly strive to clean up ‘Tables’, writing many queries to find which Table uses the most hard disk space.

This article illustrates how to query the System Tables to find the space usage, which helps Database Administrators identify the Tables that are using the most space in order to archive the old data and purge un-necessary data.

1. Logon to the SQL Server Instance [SQL Server 2005 or SQL Server 2008].

2. Navigate to the database that you want to get the space information on.

3. Copy and Paste the code to your Query Window and Execute it.

4. Check the Results and view the Used Table Space within the selected Database.

DECLARE
	@TABLENM SYSNAME,
	@CNT INT,
	@TOPN INT
DECLARE TABLE_SPACE CURSOR FAST_FORWARD
	FOR 
		 SELECT
		 NAME
		 FROM SYSOBJECTS
		 WHERE XTYPE = 'U'
SELECT @CNT = 0, @TOPN = 0
CREATE TABLE #TMPUSAGE
	 (
		 NAME SYSNAME,
		 ROWS INT,
		 RESERVED VARCHAR(20),
		 DATA VARCHAR(20),
		 INDEX_SIZE VARCHAR(20),
		 UNUSED VARCHAR(20)
	 )
OPEN TABLE_SPACE
FETCH NEXT FROM TABLE_SPACE INTO @TABLENM
WHILE @@FETCH_STATUS = 0 AND @CNT <= @TOPN
BEGIN
	INSERT INTO #TMPUSAGE 
	EXEC SP_SPACEUSED @TABLENM, 'TRUE'
 IF
	@TOPN <> 0
	SELECT @CNT = @CNT +1
	FETCH NEXT FROM TABLE_SPACE INTO @TABLENM
 END
CLOSE TABLE_SPACE
DEALLOCATE TABLE_SPACE
SELECT 
 	*
FROM 
	#TMPUSAGE 
ORDER BY 
	CONVERT(INT,LEFT(RESERVED, LEN(RESERVED)- 3)) DESC

IF (SELECT OBJECT_ID('TEMPDB..#TMPUSAGE') ) IS NOT NULL
DROP TABLE #TMPUSAGE

Rate

5 (2)

You rated this post out of 5. Change rating

Share

Share

Rate

5 (2)

You rated this post out of 5. Change rating