2010-10-20 9 views

Antwort

7

Eine einfachere Syntax:

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

können Sie diese gespeicherte Prozedur verwenden:

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

Dieses ein Ergebnis für jede Tabelle in der Datenbank zurück (jeweils den Namen zeigt, und die Anzahl der Zeilen, unter anderem Informationen).

Hier ist, wie man sie in eine Tabelle Variable setzen, und sie durch die Anzahl der Zeilen bestellen:

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

Try this - gibt Ihnen die Tabellennamen und die Zeilenanzahl:

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 

Es zeigt alle Tabellen und ihre Zeilenanzahl in einem einzigen Ausgang.

+0

Falsche Syntax in der Nähe des Schlüsselwortes 'RowCount'. –

+0

Wie kann es auf bestimmte DB beschränkt werden? Wenn ich auf dem gleichen SQL-Server mehr Datenbanken mit denselben Tabellennamen habe, wird die Zeilenanzahl addiert. –

+0

@OndraPeterka: Nein, dies wird immer im Zusammenhang mit ** einer Datenbank ** ausgeführt - und nur diese Tabellen werden angezeigt. Dies zeigt ** nicht ** alle Tabellen aller Datenbanken eines Servers –

13

Da Ihre Frage ausdrücklich erwähnt SSMS können Sie auch einen Rechtsklick auf die Datenbank in Objekt-Explorer und dann aus dem Abkürzungsmenü tun

Reports -> Standard Reports -> Disc Usage By Table 

Screenshot

+0

das ist super super hilfreich –

+0

Beste Antwort. Vielen Dank! – DonP

Verwandte Themen