Overblog Folge diesem Blog
Edit post Administration Create my blog
Blog von Olaf Helper

Größe zu allen Objekten ermitteln 2 (DMV)

19. August 2009 , Geschrieben von Olaf Helper Veröffentlicht in #T-SQL

Ich hatte schon mal ein T-SQL Script veröffentlich, um die Größe zu allen Objekten zu ermitteln, das mindestens ab dem Microsoft SQL Server 2000 läuft und die interne Stored Procedure EXEC sp_spaceused @objname =  … verwendet, für das Ergebnis aber eine temporäre Tabelle erstellen muss.

Ab dem MS SQL Server 2005 geht es einfacher über die DMV (Dynamic Management Views) namens sys.dm_db_partition_stats. Nicht über „Partition“ wundern: auch wenn man nicht die Enterprise Edition hat bzw. keine Partitionierung der Datenbanken nutzt, die Partition Nr. 1 gibt es immer.

Hier das T-SQL Script dazu:

 -- Detailsicht auf alle Datenobjekte mit Aufteilung der Partitionen
-- mit Anzahl Zeilen und den verwendeten + reservierten
-- Speicherplatz in KiloByte
SELECT SCH.name AS SchemaName,
OBJ.name AS ObjName,
OBJ.type_desc AS ObjType,
INDX.name AS IndexName,
INDX.type_desc AS IndexType,
PART.partition_number AS PartitionNumber,
PART.rows AS PartitionRows,
STAT.row_count AS StatRowCount,
STAT.used_page_count * 8 AS UsedSizeKB,
STAT.reserved_page_count * 8 AS RevervedSizeKB
FROM sys.partitions AS PART
INNER JOIN sys.dm_db_partition_stats AS STAT
ON PART.partition_id = STAT.partition_id
AND PART.partition_number = STAT.partition_number
INNER JOIN sys.objects AS OBJ
ON STAT.object_id = OBJ.object_id
INNER JOIN sys.schemas AS SCH
ON OBJ.schema_id = SCH.schema_id
INNER JOIN sys.indexes AS INDX
ON STAT.object_id = INDX.object_id
AND STAT.index_id = INDX.index_id
ORDER BY SCH.name, OBJ.name, INDX.name, PART.partition_number

Diesen Post teilen

Repost 0

Kommentiere diesen Post