2010-10-20 16 views

Respuesta

7

una sintaxis más simple:

SELECT [Name]  = o.name 
    ,  [RowCount] = SUM(p.row_count) 

FROM SYS.DM_DB_PARTITION_STATS p 

INNER JOIN 
     SYS.TABLES o 
    ON p.[object_ID] = o.[object_id] 

WHERE index_id <= 1 -- Heap or clustered index only 

GROUP BY o.name 

ORDER BY 2 desc 
3

Puede utilizar este procedimiento almacenado:

EXEC sp_MSforeachtable @command1="EXEC sp_spaceused '?'" 

Esto devolverá un conjunto de resultados para cada tabla en la base de datos (cada uno con el nombre y el número de filas, entre otra información).

Aquí es cómo usted puede ponerlos en una variable de tabla, y ordenarlos por el número de filas:

DECLARE @TBL TABLE (
    [name] nvarchar(500), 
    [rows] bigint, 
    [reserved] nvarchar(500), 
    [data] nvarchar(500), 
    [index_size] nvarchar(500), 
    [unused] nvarchar(500) 
) 

INSERT INTO @TBL 
EXEC sp_MSforeachtable @command1="EXEC sp_spaceused '?'" 

SELECT * FROM @TBL 
ORDER BY [rows] DESC 
22

probar este - le da el nombre de tabla y contar la fila:

SELECT 
    t.NAME AS TableName, 
    SUM(p.rows) AS [RowCount] 
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 
WHERE 
    i.index_id <= 1 
GROUP BY 
    t.NAME, i.object_id, i.index_id, i.name 
ORDER BY 
    SUM(p.rows) DESC 

Muestra todas las tablas y sus recuentos de filas en una sola salida.

+0

Sintaxis incorrecta cerca de la palabra clave 'RowCount'. –

+0

¿Cómo se puede restringir a cierta base de datos? Si tengo en el mismo servidor sql más bases de datos con los mismos nombres de tabla, el recuento de filas se agregará. –

+0

@OndraPeterka: no, esto siempre se ejecuta en el contexto de ** una base de datos ** - y solo se mostrarán esas tablas. Esto no ** ** muestra todas las tablas de todas las bases de datos de un servidor –

13

Como su pregunta menciona específicamente SSMS también puede hacer clic derecho en la base de datos en el Explorador de objetos y luego en el menú de atajo hacer

Reports -> Standard Reports -> Disc Usage By Table 

Screenshot

+0

esto es súper útil –

+0

La mejor respuesta. ¡Gracias! – DonP

Cuestiones relacionadas