--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
Tuesday, September 23, 2014
Scrip to find Schema level size information in SQL Server
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment