--Script to know number of tables, row count, data size, index size, used size BEGIN TRY SELECT --(row_number() over(order by a3.name, a2.name))%2 as l1, a3.NAME AS [schemaname] ,count(a2.NAME) AS NumberOftables ,sum(a1.rows) AS row_count ,sum((a1.reserved + ISNULL(a4.reserved, 0)) * 8) AS reserved ,sum(a1.data * 8) AS data ,sum(( CASE WHEN (a1.used + ISNULL(a4.used, 0)) > a1.data THEN (a1.used + ISNULL(a4.used, 0)) - a1.data ELSE 0 END ) * 8) AS index_size ,sum(( CASE WHEN (a1.reserved + ISNULL(a4.reserved, 0)) > a1.used THEN (a1.reserved + ISNULL(a4.reserved, 0)) - a1.used ELSE 0 END ) * 8) AS unused FROM ( SELECT ps.object_id ,SUM(CASE WHEN (ps.index_id < 2) THEN row_count ELSE 0 END) AS [rows] ,SUM(ps.reserved_page_count) AS reserved ,SUM(CASE WHEN (ps.index_id < 2) THEN (ps.in_row_data_page_count + ps.lob_used_page_count + ps.row_overflow_used_page_count) ELSE (ps.lob_used_page_count + ps.row_overflow_used_page_count) END) AS data ,SUM(ps.used_page_count) AS used FROM sys.dm_db_partition_stats ps GROUP BY ps.object_id ) AS a1 LEFT JOIN ( SELECT it.parent_id ,SUM(ps.reserved_page_count) AS reserved ,SUM(ps.used_page_count) AS used FROM sys.dm_db_partition_stats ps INNER JOIN sys.internal_tables it ON (it.object_id = ps.object_id) WHERE it.internal_type IN ( 202 ,204 ) GROUP BY it.parent_id ) AS a4 ON (a4.parent_id = a1.object_id) INNER JOIN sys.all_objects a2 ON (a1.object_id = a2.object_id) INNER JOIN sys.schemas a3 ON (a2.schema_id = a3.schema_id) WHERE a2.type <> 'S' AND a2.type <> 'IT' GROUP BY a3.NAME ORDER BY a3.NAME END TRY BEGIN CATCH SELECT - 100 AS l1 ,1 AS schemaname ,ERROR_NUMBER() AS tablename ,ERROR_SEVERITY() AS row_count ,ERROR_STATE() AS reserved ,ERROR_MESSAGE() AS data ,1 AS index_size ,1 AS unused END CATCH
Showing posts with label information. Show all posts
Showing posts with label information. Show all posts
Tuesday, September 23, 2014
Scrip to find Schema level size information in SQL Server
Subscribe to:
Comments (Atom)