Die Größe Ihrer SQL Server-Datenbanken verstehen
In der Welt des Datenbankmanagements auftretende häufige Frage lautet: Wie kann ich die Gesamtgröße aller Datenbanken in SQL Server bestimmen? Dies ist eine wichtige Aufgabe für Datenbankadministratoren, die den Speicherplatz und die Ressourcen effektiv verwalten müssen. Egal, ob Sie an der Überwachung des Datenbankwachstums, der Kapazitätsplanung oder einfach nur an der Verfolgung der Speichernutzung interessiert sind, es ist entscheidend, die Größe Ihrer SQL Server-Datenbanken zu kennen.
SQL Server bietet eine unkomplizierte Möglichkeit, die Gesamtheit und Nutzung Ihrer Datenbanken zu veranschaulichen. Im Folgenden gehen wir durch eine gespeicherte Prozedur, die Sie implementieren können, um vollständige Einblicke in den belegten Speicherplatz Ihrer SQL Server-Datenbanken zu erhalten, die speziell für Versionen bis SQL Server 2008 anwendbar ist.
Die Lösung: Eine gespeicherte Prozedur
Um die Datenbankgrößen zu finden, erstellen wir eine gespeicherte Prozedur, die den gesamten verwendeten Speicher, den verfügbaren Speicher zusammenfasst und wesentliche Informationen zu den Daten- und Protokolldateien jeder Datenbank bereitstellt. Lassen Sie uns dies Schritt für Schritt durchgehen.
Schritt 1: Einrichten der gespeicherten Prozedur
So können Sie eine gespeicherte Prozedur mit dem Namen sp_SDS
erstellen, um die Datenbankgrößen zusammenzufassen:
USE master;
GO
IF OBJECT_ID('dbo.sp_SDS', 'P') IS NOT NULL
DROP PROCEDURE dbo.sp_SDS;
GO
CREATE PROCEDURE dbo.sp_SDS
@TargetDatabase sysname = NULL, -- NULL: alle DBs
@Level varchar(10) = 'Datenbank', -- Optionen: "Datenbank", "Datei"
@UpdateUsage bit = 0, -- Standard kein Update
@Unit char(2) = 'MB' -- Einheiten: Megabyte, Kilobyte, Gigabyte
AS
Schritt 2: Erste Einrichtung
Innerhalb der gespeicherten Prozedur führen wir erste Überprüfungen durch und erstellen temporäre Tabellen, um die Datenbankinformationen zu speichern:
- Überprüfung auf Ziel-Datenbank: Wenn eine bestimmte Datenbank angefordert wird, stellen wir sicher, dass sie existiert.
- Erstellung temporärer Tabellen: Wir erstellen Tabellen, um Datenbankstatistiken zu speichern, einschließlich Gesamtgröße, verwendeter Platz und freier Speicherplatz.
Schritt 3: Sammeln von Datenbankinformationen
Wir sammeln dann Details über die Datenbanken in unserem SQL Server. Die wichtigsten Elemente, die wir erfassen werden, sind:
- Datenbankname
- Typ (Daten oder Protokoll)
- Logischer Name
- Gesamtgröße
- Verwendeter Speicherplatz und freier Speicherplatz
So rufen wir diese Daten ab:
SELECT
@String = 'INSERT INTO dbo.##Tbl_CombinedInfo (DatabaseName, type, LogicalName, PhysicalName, T) '
+ 'SELECT DB_NAME(), {...} FROM sysfiles WHERE DB_NAME() = @DatabaseName';
EXEC (@String);
Schritt 4: Größen berechnen
Nachdem wir die erforderlichen Daten gesammelt haben, führen wir Berechnungen durch, um die Prozentsätze für verwendeten und freien Speicherplatz zu bestimmen:
- Aktualisieren Sie den verwendeten Speicher basierend auf den Extents jeder Datei.
- Berechnen Sie den Prozentsatz des verwendeten und freien Speichers für Daten- und Protokolldateien.
Schritt 5: Ergebnisse anzeigen
Schließlich wählen wir die berechneten Informationen aus und präsentieren sie dem Benutzer:
SELECT DatabaseName AS 'Datenbank',
type AS 'Typ',
T AS 'Gesamte',
U AS 'Verwendet',
[U(%)] AS 'Verwendet (%)',
F AS 'Frei',
[F(%)] AS 'Frei (%)',
PhysicalName
FROM dbo.##Tbl_CombinedInfo
WHERE DatabaseName LIKE ISNULL(@TargetDatabase, '%')
ORDER BY DatabaseName ASC, type ASC;
Beispiel für die Ausführung
Um diese gespeicherte Prozedur auszuführen, rufen Sie sie einfach so auf:
EXEC dbo.sp_SDS;
Sie können auch eine bestimmte Datenbank anvisieren oder die Einheiten für die Ausgabe anpassen:
EXEC dbo.sp_SDS 'your_database_name', 'Datenbank', 1, 'GB';
Fazit
Die Kenntnis der Größe Ihrer SQL Server-Datenbanken unterstützt nicht nur eine effektive Kapazitätsplanung, sondern verbessert auch Ihre gesamte Datenbankmanagementstrategie. Durch die Implementierung der bereitgestellten gespeicherten Prozedur können Sie effizient Einblicke in Ihre SQL Server-Datenbanken gewinnen und somit optimale Leistung und Ressourcenzuteilung sicherstellen.
Fühlen Sie sich frei, Ihre Erfahrungen oder Anpassungen, die Sie an dem Skript für Ihre spezifischen Bedürfnisse vorgenommen haben, zu teilen!