größe aller Tabellen ermitteln – MSSQL

      Kommentare deaktiviert für größe aller Tabellen ermitteln – MSSQL
Tabellengrösse in MSSQL

Tabellengrösse MSSQL

Wenn man bei der täglichen Datensicherung so überprüft, fällt einem ab und zu ein richtig großer Brocken auf. Bei Dateien ist das kein Problem, bei Datenbanken hingegen schon. Wenn die SQL-Datenbank plötzlich mehrere Gigabyte (GB) groß ist, fragt man sich, woher das kommt. Es gibt die Möglichkeit, auf jede Tabelle zu klicken und dann
Um den Überblick über alle Tabellen und deren größte Speicherfresser in einer Datenbank zu erhalten, braucht man nur die folgende Prozedur.

CREATE PROCEDURE [dbo].[Groesse_aller_Tabellen_einer_DB]
AS
BEGIN
SET NOCOUNT ON;

declare @RowCount int, @tablename VARCHAR(100)
declare @Tables table (
PK int IDENTITY(1,1),
tablename VARCHAR(100),
processed BIT
)
INSERT INTO  @Tables (tablename)
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' and TABLE_NAME NOT LIKE 'dt%' ORDER BY TABLE_NAME asc

declare @Space TABLE (
name VARCHAR(100), rows nVARCHAR(100), reserved VARCHAR(100), data VARCHAR(100), index_size VARCHAR(100), UNUSED VARCHAR(100)
)
SELECT TOP 1 @tablename = tablename FROM @Tables WHERE processed IS NULL
SET @RowCount = 1
WHILE (@RowCount != 0)
BEGIN
insert INTO  @Space exec sp_spaceused @tablename
UPDATE @Tables set processed = 1 WHERE tablename = @tablename
SELECT TOP 1 @tablename = tablename FROM @Tables WHERE processed IS NULL
SET @RowCount = @@RowCount
END

UPDATE @Space set data = replace(data, ' KB', '')
UPDATE @Space set data = convert(int, data)/1000
UPDATE @Space set data = data + ' MB'
UPDATE @Space set reserved = replace(reserved, ' KB', '')
UPDATE @Space set reserved = convert(int, reserved)/1000
UPDATE @Space set reserved = reserved + ' MB'

SELECT * FROM @Space ORDER BY CONVERT(INT, REPLACE(data, ' MB', '')) DESC
END