SQL SERVER – Query to Find ByteSize of All the Tables in Database

SELECT CASE WHEN (GROUPING(sob.name)=1THEN 'All_Tables'
   
ELSE ISNULL(sob.name'unknown'END AS Table_name,
   
SUM(sys.lengthAS Byte_Length
FROM sysobjects sobsyscolumns sys
WHERE sob.xtype='u' AND sys.id=sob.id
GROUP BY sob.name
WITH CUBE

Reference : Pinal Dave (https://blog.sqlauthority.com)

SQL Scripts, SQL Stored Procedure
Previous Post
SQL SERVER – Query to Display Foreign Key Relationships and Name of the Constraint for Each Table in Database
Next Post
SQL SERVER – Auto Generate Script to Delete Deprecated Fields in Current Database

Related Posts

15 Comments. Leave new

  • how i can find? please reply

    1.What is the current file system size of the database?

    2. What is the current size of the tables (used)?

    Reply
  • Imran Mohammed
    July 18, 2008 9:35 am

    @Sandhu

    You can find it through two ways

    a) Query Analyzer.
    b) SSMS/Enterprise Manager.

    a). Query Analyzer :

    1. Sp_helpdb — execute this is master database.
    Output : you will get information about all databases sizes.
    2. sp_help ”database_name” —
    Output: gives in detail information about Log and data file, with their sizes.
    2. Sp_helpfile ( execute in the database for which you want size). Will give the same information about log and data file of the current database.

    b) Enterprize manager: Expand Sql Server – Expand databases- click on database name = right click on database name – view – all task and then you can see in detail information about the size of the log file and also data file. And also you can see how much is filled, how much is empty.
    b) in Enterprise Manager – right click database name , click properties, you will see the database size.
    c) SSMS (2005) : Right click database select reports- click standard reports – Disk usage. you will see a report and you can see all details about sizes. If you expand the last point ” Disk usage by datafiles” you can see some good information.
    d) SSMS (2005) – Right click database name, click properties and you can see database size.

    To see the only logspace for all databases. Execute this statement,

    DBCC SQLPERF( logspace)

    Output: Will give you detail information about Logfile of the database.

    your second question about tables:

    Please visit this link : https://blog.sqlauthority.com/2008/07/08/sql-server-find-space-used-for-any-particular-table/

    Hope this helps.
    Thanks
    Imran.

    Reply
  • Good article Thank you :)

    Reply
  • Simple & sweet!

    Reply
  • great stuff…thanks

    Reply
  • sathish (@apshathish)
    November 1, 2011 12:15 pm

    i am the beginner.. so may i know what is byte_length…

    Reply
  • select a.name,Sum(b.[max_length]) from sys.objects a INNER JOIN
    sys.columns b ON a.object_id=b.object_id Where type = ‘u’ Group by a.name

    Reply
  • select a.name,Sum(b.[max_length]) from sys.objects a INNER JOIN
    sys.columns b ON a.object_id=b.object_id Where type = ‘u’ Group by a.name

    Reply
  • Saurabh Savaliya
    January 24, 2012 12:27 pm

    very helping article thanks buddy

    Reply
  • abhIShek BandI
    March 29, 2012 4:56 pm

    Hi Pinal,
    My table structure is like this.
    using with above script am getting the Max_Length as “3”

    Column_name Type Computed Length
    ID int no 4
    SPName varchar no -1

    But varchar(max) length is 8000bytes …
    How can we get exact lenght. Correct me if am wrong…

    Regards,
    abhIShek BandI

    Reply
  • Nice thank you for such a nice information

    Reply
  • Nice piece of information. As i am beginner as a DBA . I have started referring all your blogs from the beginning.

    Reply
  • Select ISNULL(t.name,’AllTables’)[TableName],Sum(C.max_length)[TableSize]
    from sys.tables T
    join sys.columns C on t.object_id=C.object_id
    Group by rollup (t.name)

    Reply
  • Select ISNULL(t.name,’AllTables’)[TableName],Sum(C.max_length)[TableSize]
    from sys.tables T
    join sys.columns C on t.object_id=C.object_id
    Group by Grouping Sets (t.name)
    —-for DBs having compatablilty Mode less than 100 ;)

    Reply

Leave a Reply