Für die Optimierung und Wartung eines MSSQL-Server ist es wichtig Speicherplatznutzung auslesen zu können.
Hier bietet Microsoft die Systemprozedur sp_spaceused an.

Auslesen der Zeilenanzahl sowie der Data-Größe und Index-Größe einer Tabelle einer Datenbank

USE <<Datenbankname>>
GO
EXEC sp_spaceused N'<<TABELLEN-NAME>>'
GO

Rückgabewerte:

  • Name ==> Name der abgefragten Tabelle
  • Rows ==> Anzahl der Zeilen innerhalb der Tabelle
  • reserved ==> zugewiesener Speicherplatz für den Objektnamen
  • data ==> Gesamter verwendeter Speicherplatz
  • index_size ==> Gesamter  verwendeter Speicherplatz.
  • unused ==> zugeordneter aber nicht verwendeter Speicherplatz

Mit diesen Angaben kann man z.B. eine erste Analyse der Indizes durchführen. Eine folge dieser Analyse könnte sein, dass der Füllgrad der Indizes verändert werden muss.

Eine Erweiterung dieser Prozedur ist das Auslesen der Datenbank-Werte.

USE <<Datenbankname>>
GO
EXEC sp_spaceused @updateusage = N'TRUE';
GO

Mit dem Parameter @updateusage = N’TRUE‘ ist sichergestellt, dass die Werte aktuell sind. Der Parameter kann auch im ersten Beispiel verwendet werden.

Als Ergebnis bekommt man zwei Result-Sets.

Rückgabewerte Result-Set 1:

  • database_name ==> Name der Datenbank
  • database_size ==> Größe der Datenbank (Datendateien und Logdateien) in MB
  • unallocated space ==> zugewiesener aber nicht verwendeter Speicherplatz

Rückgabewerte Result-Set 2:

  • reserved ==> gesamter zugeordneter Speicherplatz
  • data ==> von Daten verwendeter Speicherplatz
  • index_size ==> von Indizes verwendeter Speicherplatz
  • unused ==> zugewiesener aber nicht verwendeter Speicherplatz

Berechtigung für sp_spaceused

Für das Ausführen der Prozedur sp_spaceused reicht das Recht PUBLIC. Möchte man jedoch den Parameter @updateusage verwenden benötigt man das Recht DB_OWNER.

Von Michael