Examining table size

The SQL Server system stored procedure sp_spaceused reports information about a table that can be useful in forming and implementing a data retention plan.
Note: This topic applies only to on-premises environments.

The stored procedure shows this information:

  • Number of rows in a table
  • Space reserved for a table
  • Space used by data in a table
  • Space used by the index in a table
  • Unused space in a table
In SQL Server Management Studio, with the Mongoose application database selected as the current database, use this syntax to generate a report on a table:
EXEC sp_spaceused table_name

Example:


EXEC sp_spaceused ledger

To report on tables that are likely to need attention in a data retention plan, you can use this script:


-- Ledger          
EXEC sp_spaceused ledger
EXEC sp_spaceused ledger_all

-- Material Transaction  
EXEC sp_spaceused matltran
EXEC sp_spaceused matltran_all
EXEC sp_spaceused matltran_amt
EXEC sp_spaceused matltran_amt_all

-- Job Transactions    
EXEC sp_spaceused jobtran

-- AR Transactions     
EXEC sp_spaceused artran
EXEC sp_spaceused artran_all

-- AP Transactions     
EXEC sp_spaceused aptrxp
EXEC sp_spaceused aptrxp_all

-- Audit Logs
EXEC sp_spaceused AuditLog

To report on all tables in the database, you can use this script:


DECLARE @table_name sysname
DECLARE Tables_Cursor CURSOR FOR
SELECT name 
FROM sysobjects
WHERE type = 'U' ORDER BY 1

OPEN Tables_Cursor

FETCH NEXT FROM Tables_Cursor
INTO @table_name
WHILE @@FETCH_STATUS = 0
BEGIN
  EXEC sp_spaceused @table_name
  FETCH NEXT FROM Tables_Cursor
  INTO @table_name
END

CLOSE Tables_Cursor
DEALLOCATE Tables_Cursor

To select tables with similar names, modify the WHERE clause in the script. For example, to report only on tables with the _all suffix, replace this clause:


WHERE type = 'U' ORDER BY 1

With this clause:


WHERE type = 'U' AND name LIKE '%[_]all' ORDER BY 1 

For more information about sp_spaceused, see the SQL Server help.