2012-10-12 33 views
5

Tôi đang cố nén các bảng lớn nhất trong cơ sở dữ liệu của mình. Tôi sẽ làm điều này bằng cách chạy thủ tục lưu sẵn SP_ForEachDB. Tuy nhiên tôi không thể tìm ra cách để xem tổng số trang. Tôi có thể lấy số hàng với truy vấn này ...Xác định số lượng trang trên mỗi bảng SQL mà không sử dụng DBCC

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 

nào trả về:

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

và vân vân cho tất cả các bảng của tôi.

Tôi đang tìm kiếm điều tương tự nhưng trả lại Số trang thay thế.

Trả lời

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

Hoàn hảo, Cảm ơn bạn. –

Các vấn đề liên quan