Sunday, October 26, 2014

Query to list number of records in each table in a database


 SELECT   
   t.NAME AS TableName,  
   i.name as indexName,  
   p.[Rows],  
   sum(a.total_pages) as TotalPages,   
   sum(a.used_pages) as UsedPages,   
   sum(a.data_pages) as DataPages,  
   (sum(a.total_pages) * 8) / 1024 as TotalSpaceMB,   
   (sum(a.used_pages) * 8) / 1024 as UsedSpaceMB,   
   (sum(a.data_pages) * 8) / 1024 as DataSpaceMB  
 FROM   
   sys.tables t  
 INNER JOIN     
   sys.indexes i ON t.OBJECT_ID = i.object_id  
 INNER JOIN   
   sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id  
 INNER JOIN   
   sys.allocation_units a ON p.partition_id = a.container_id  
 WHERE   
   t.NAME NOT LIKE 'dt%' AND  
   i.OBJECT_ID > 255 AND    
   i.index_id <= 1  
 GROUP BY   
   t.NAME, i.object_id, i.index_id, i.name, p.[Rows]  
 ORDER BY   
   --object_name(i.object_id)   
   rows desc  
OR
 SELECT sc.name +'.'+ ta.name TableName  
 ,SUM(pa.rows) RowCnt  
 FROM sys.tables ta  
 INNER JOIN sys.partitions pa  
 ON pa.OBJECT_ID = ta.OBJECT_ID  
 INNER JOIN sys.schemas sc  
 ON ta.schema_id = sc.schema_id  
 WHERE ta.is_ms_shipped = 0 AND pa.index_id IN (1,0)  
 GROUP BY sc.name,ta.name  
 ORDER BY SUM(pa.rows) DESC  

No comments:

Post a Comment