Keyboard Face

when you find QWERTY imprinted on your cheek - it's time to go to bed.

Tags

asp CSS css menus dreamweaver flash gallery2 hosting iis7 Javascript jquery jquery ui left mac mssql os9 php printer rdp SEO sql sql server windows wordpress

MSSQL Table Size for all tables

June 12, 2007 by Tom 7 Comments

As far as I could tell there was no easy way to query MSSQL to get a list of all of its tables and their respective sizes. I wrote a sql script that does this for you.

It’s below:

declare @RowCount int, @tablename varchar(100)
declare @Tables table (
PK int IDENTITY(1,1),
tablename varchar(100),
processed bit
)
INSERT into @Tables (tablename)
SELECT TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_TYPE = 'BASE TABLE' and TABLE_NAME not like 'dt%' order by TABLE_NAME asc

declare @Space table (
name varchar(100), rows nvarchar(100), reserved varchar(100), data varchar(100), index_size varchar(100), unused varchar(100)
)
select top 1 @tablename = tablename from @Tables where processed is null
SET @RowCount = 1
WHILE (@RowCount <> 0)
BEGIN
insert into @Space exec sp_spaceused @tablename
update @Tables set processed = 1 where tablename = @tablename
select top 1 @tablename = tablename from @Tables where processed is null
SET @RowCount = @@RowCount
END

update @Space set data = replace(data, ' KB', '')
update @Space set data = convert(int, data)/1000
update @Space set data = data + ' MB'
update @Space set reserved = replace(reserved, ' KB', '')
update @Space set reserved = convert(int, reserved)/1000
update @Space set reserved = reserved + ' MB'

select * from @Space order by convert(int, replace(data, ' MB', '')) desc

Filed Under: SQL Server

Comments

  1. Alfred Dahl says

    June 19, 2008 at 12:05 am

    Thanks,

    greatly appreciated – works like a charm 🙂

  2. Richie says

    July 4, 2008 at 6:10 am

    nice one, thanks!

  3. Richie says

    July 4, 2008 at 6:16 am

    BTW: If you are only interested in Tables that contain data/aren’t empty, exchange the last select statement with this one:

    select * from @Space where data NOT LIKE ‘0 MB’ order by convert(int, replace(data, ‘ MB’, ”)) desc

  4. Tom says

    July 4, 2008 at 8:17 am

    That’s great. Thanks

  5. Zoli says

    October 17, 2008 at 3:10 pm

    Thank for the code. I’ve made some modifications for better performance and the different schema usage:

    declare @tablename varchar(100),@tableschema varchar(100), @tt varchar(100)
    DECLARE @partitions bigint;
    declare @Space table (
    name varchar(100), rows nvarchar(100), reserved varchar(100), data varchar(100), index_size varchar(100), unused varchar(100)
    )

    select s.name as tableschema, o.name as tablename
    into #work_to_do
    FROM sys.objects as o
    JOIN sys.schemas as s ON s.schema_id = o.schema_id
    WHERE o.type_desc = ‘USER_TABLE’
    order by o.name

    DECLARE partitions CURSOR FOR SELECT * FROM #work_to_do;

    OPEN partitions;

    WHILE (1=1)
    BEGIN;
    FETCH NEXT
    FROM partitions
    INTO @tableschema, @tablename;
    IF @@FETCH_STATUS < 0 BREAK;
    SET @tt = @tableschema + N’.’ + @tablename
    insert into @Space exec sp_spaceused @tt
    END;
    update @Space set data = replace(data, ‘ KB’,”)
    update @Space set data = convert(int, data)/1000

    update @Space set reserved = replace(reserved, ‘ KB’,”)
    update @Space set reserved = convert(int, reserved)/1000

    update @Space set index_size = replace(index_size, ‘ KB’,”)
    update @Space set index_size = convert(int, index_size)/1000

    update @Space set unused = replace(unused, ‘ KB’,”)
    update @Space set unused = convert(int, unused)/1000

    CLOSE partitions;
    DEALLOCATE partitions;
    drop table #work_to_do

    select top 500 * from @Space order by convert(int, data) desc

  6. Mark Stouffer says

    November 13, 2008 at 1:06 pm

    Wow, thanks. I was just about to write this myself. The space used is great but I don’t want to run it for every table.

  7. Dino says

    March 11, 2009 at 5:16 am

    Tnx!

Leave a Reply Cancel reply

Your email address will not be published.

Pages

  • About Me
  • WordPress Permalinks in IIS using Custom 404 Redirect

Archives

  • May 2019
  • February 2019
  • January 2018
  • May 2016
  • April 2016
  • December 2015
  • November 2015
  • May 2015
  • April 2015
  • January 2013
  • March 2012
  • February 2012
  • December 2011
  • September 2011
  • August 2011
  • November 2010
  • October 2010
  • June 2010
  • April 2010
  • March 2010
  • February 2010
  • January 2010
  • December 2009
  • November 2009
  • September 2009
  • August 2009
  • July 2009
  • April 2009
  • March 2009
  • February 2009
  • January 2009
  • November 2008
  • September 2008
  • July 2008
  • June 2008
  • May 2008
  • April 2008
  • March 2008
  • February 2008
  • December 2007
  • October 2007
  • September 2007
  • August 2007
  • July 2007
  • June 2007
  • May 2007
  • January 2007
  • November 2006
  • October 2006
  • September 2006
  • August 2006
  • July 2006
  • June 2006
  • May 2006
  • April 2006
  • March 2006
  • February 2006
  • January 2006
  • December 2005
  • November 2005
  • October 2005
  • September 2005
  • May 2005

ASP.NET Resources

  • Keven Roth’s Code Library
  • Lemon Law

Blogroll

  • Arin Morfopoulos
  • Jamie
  • Physical Therapists

Code Search Engines

  • Koders
  • Krugle

CSS & Design Resources

  • CSS Basics

Other

  • Amazon
  • Car Repair Questions
  • Cool Quizzes
  • Delphi LA
  • Physical Therapy Clinic Directory
  • Quickbooks Questions
  • Secret Santa Game

Site\'s I\'ve Designed or Helped With

  • Area Rugs
  • Dental Implants
  • Dental Website Design
  • FHA Loans
  • Secret Santa Gift Ideas