2012-10-12 93 views
5

Estoy intentando comprimir las tablas más grandes de mi base de datos. Haré esto ejecutando el procedimiento almacenado SP_ForEachDB. Sin embargo, no puedo entender cómo ver el recuento total de páginas. Puedo obtener el número de filas con esta consulta ...Determinar el número de páginas en cada tabla SQL sin usar 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 

que devuelve:

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

y así sucesivamente para todos mis mesas.

Estoy buscando lo mismo pero devolviendo la cuenta de la página en su lugar.

Respuesta

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

Perfecto, gracias. –

Cuestiones relacionadas