2012-10-12 16 views
5

我試圖壓縮數據庫中最大的表。我將通過運行SP_ForEachDB存儲過程來完成此操作。但我無法弄清楚如何查看總頁數。我可以得到行數與此查詢...在不使用DBCC的情況下確定每個SQL表的頁數

USE DEVELOP04_HiltonUS 

GO 

SELECT 
    [TableName] = so.name, 
    [RowCount] = MAX(si.rows) 
FROM 
    sysobjects so, 
    sysindexes si 
WHERE 
    so.xtype = 'U' 
    AND 
    si.id = OBJECT_ID(so.name) 
GROUP BY 
    so.name 
ORDER BY 
    2 DESC 

將返回:

  TABLE NAME ROW COUNT 
      PlannedShift 38268660 
     BudgetStaffStat 19353104 
      BudgetKBIStat 14142631 
EmployeeShiftAdjustment 13493745 
      Requirement 11020921 
    EmployeeShiftError 6857235 
     JobclassLaborData 5638692 

等我所有的表。

我正在尋找相同的東西,但返回頁數而不是。

回答

11
SELECT OBJECT_SCHEMA_NAME(s.object_id) schema_name, 
     OBJECT_NAME(s.object_id) table_name, 
     SUM(s.used_page_count) used_pages, 
     SUM(s.reserved_page_count) reserved_pages 
FROM sys.dm_db_partition_stats s 
JOIN sys.tables t 
     ON s.object_id = t.object_id 
GROUP BY s.object_id 
ORDER BY schema_name, 
     table_name; 
+0

完美,謝謝。 –

相關問題