Ich benutze dieses SQL-Skript (das ich irgendwo von jemandem bekommen habe - ich kann nicht rekonstruieren, von wem es stammt) seit Ewigkeiten und es hat mir einiges geholfen, die Größe von Indizes und Tabellen zu verstehen und zu bestimmen:
SELECT
t.name AS TableName,
i.name as indexName,
sum(p.rows) as RowCounts,
sum(a.total_pages) as TotalPages,
sum(a.used_pages) as UsedPages,
sum(a.data_pages) as DataPages,
(sum(a.total_pages) * 8) / 1024 as TotalSpaceMB,
(sum(a.used_pages) * 8) / 1024 as UsedSpaceMB,
(sum(a.data_pages) * 8) / 1024 as DataSpaceMB
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
INNER JOIN
sys.allocation_units a ON p.partition_id = a.container_id
WHERE
t.name NOT LIKE 'dt%' AND
i.object_id > 255 AND
i.index_id <= 1
GROUP BY
t.name, i.object_id, i.index_id, i.name
ORDER BY
object_name(i.object_id)
Natürlich können Sie auch andere Bestellkriterien verwenden, z
ORDER BY SUM(p.rows) DESC
um die Tabellen mit den meisten Zeilen zu erhalten, oder
ORDER BY SUM(a.total_pages) DESC
um die Tabellen mit den meisten verwendeten Seiten (8K-Blöcke) abzurufen.
SELECT OBJECT_SCHEMA_NAME(i.object_id) + '.' + OBJECT_NAME(i.object_id) AS TableName, ...
In SQL Server 2008 können Sie auch einfach den Standardbericht Datenträgerverwendung nach Top-Tabellen ausführen. Sie finden dies, indem Sie mit der rechten Maustaste auf die Datenbank klicken , Berichte-> Standardberichte auswählen und den gewünschten Bericht auswählen.
quelle
Diese Abfrage hilft, die größte Tabelle in Ihrer Verbindung zu finden.
quelle
Sie können auch den folgenden Code verwenden:
quelle
Wenn Sie SQL Server Management Studio 2008 verwenden, gibt es bestimmte Datenfelder, die Sie im Objekt-Explorer-Detailfenster anzeigen können. Navigieren Sie einfach zum Tabellenordner und wählen Sie ihn aus. In der Detailansicht können Sie mit der rechten Maustaste auf die Spaltentitel klicken und dem "Bericht" Felder hinzufügen. Ihr Kilometerstand kann variieren, wenn Sie mit SSMS 2008 Express arbeiten.
quelle
Ich fand diese Abfrage auch in SqlServerCentral sehr hilfreich. Hier ist der Link zum ursprünglichen Beitrag
SQL Server größte Tabellen
In meiner Datenbank gaben sie unterschiedliche Ergebnisse zwischen dieser Abfrage und der ersten Antwort.
Hoffe, jemand findet nützlich
quelle
Die Antwort von @ marc_s ist sehr gut und ich benutze sie seit einigen Jahren. Ich habe jedoch festgestellt, dass das Skript Daten in einigen Columnstore-Indizes vermisst und kein vollständiges Bild anzeigt. Wenn Sie beispielsweise
SUM(TotalSpace)
das Skript mit der Eigenschaft "Gesamtspeicherdatenbank" in Management Studio vergleichen, stimmen die Zahlen in meinem Fall nicht überein (Management Studio zeigt größere Zahlen an). Ich habe das Skript geändert, um dieses Problem zu beheben, und es ein wenig erweitert:Hoffe, es wird für jemanden hilfreich sein. Dieses Skript wurde gegen große TB-weite Datenbanken mit Hunderten verschiedener Tabellen, Indizes und Schemata getestet.
quelle