Grösse von Objekten in der DB ermitteln
14. Februar 2011 – 10:41Mit den folgenden Statements kann man die Grösse bestimmter Objekte in der DB herausfinden:
a) Grösse der Datenbank
1 | EXEC sp_spaceused |

b) Grösse aller Tabellen
Folgende Stored Procedure erstellen und ausführen:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | CREATE PROCEDURE sp_GetTableSizes AS SET NOCOUNT ON -- benötigte Variablen deklarieren DECLARE @SQL VARCHAR(128) DECLARE @tname VARCHAR(128) -- temporäre Tabelle für Tabellennamen erzeugen... CREATE TABLE tmpTables(tName VARCHAR(128)) -- ... und befüllen SELECT @SQL = 'INSERT tmpTables ' + 'SELECT table_name FROM INFORMATION_SCHEMA.TABLES ' + 'WHERE table_type = ''BASE TABLE''' EXEC (@SQL) -- temporäre Tabelle für Tabelleninformationen erzeugen... CREATE TABLE tmpSpaceUsed ( name VARCHAR(128), ROWS VARCHAR(11), reserved VARCHAR(18), DATA VARCHAR(18), index_size VARCHAR(18), unused VARCHAR(18)) SELECT @tname = '' -- ...über Tabellennamen und der System-SP 'sp_spaceused' befüllen WHILE EXISTS (SELECT * FROM tmpTables WHERE tName > @tname) BEGIN SELECT @tname = MIN(tName) FROM tmpTables WHERE tName > @tname SELECT @SQL = 'INSERT tmpSpaceUsed EXEC sp_spaceused ' + @tname + '' EXEC (@SQL) END -- Ausgabe des Resultsets SELECT * FROM tmpSpaceUsed -- Löschen der temporären Tabellen DROP TABLE tmpTables DROP TABLE tmpSpaceUsed |

c) Grösse einer einzelnen Tabelle
EXEC sp_spaceused Tablename
d) Grösse einer Spalte
1 2 3 | SELECT datalength(COLUMN)/1024 AS 'Size in KB' FROM TABLE ORDER BY 'SIZE in KB' DESC |
