Wie können Sie feststellen, welche Tabellen in einer SQL Server 2005-Datenbank den meisten Speicherplatz beanspruchen?
Ich bin sicher, dass es eine gespeicherte Systemprozedur gibt, die diese Informationen anzeigt.
Ich habe eine TEST-Datenbank, die von 1 TB auf 23 TB gewachsen ist. Wir führen derzeit viele Clientkonvertierungstests in der Datenbank durch, bei denen dieselbe gespeicherte Konvertierungsprozedur mehrmals ausgeführt wird. Es macht DELETEs, von denen ich sicher bin, dass sie das Transaktionsprotokoll erhöhen. Aber das brachte mich zum Nachdenken, diese Frage zu stellen.
die Info
Das große Problem ist die dbo.Download-Tabelle, sie erstellt massiven Speicher, der eigentlich nicht benötigt wird. Ich hatte 3 GB vor dem Abschneiden, dann 52 MB;)
quelle
Antworten:
Probieren Sie dieses Skript aus - es listet die Anzahl der Zeilen und den von Datenzeilen verwendeten Speicherplatz (und den insgesamt verwendeten Speicherplatz) für alle Tabellen in Ihrer Datenbank auf:
quelle
SELECT @@VERSION
, um herauszufinden) Welche Datenbankkompatibilitätsstufe hat Ihre Datenbank?Verwenden Sie sp_spacedUsed
Exec sp_spaceused N'YourTableName'
Oder wenn Sie die
sp_spaceused
für jede Tabelle in Ihrer Datenbank ausführen möchten, können Sie diese SQL verwenden:Das obige SQL ist von hier
quelle
exec sp_msforeachtable 'exec sp_spaceused N''?'''
sp_msforeachtable
existiert seit mindestens SQl Server 2000sp_msforeachtable 'sp_spaceused [?]'
wenn Sie möchten . Zurück zu SQL2000 verifiziert.Rossisdeads Kommentar beantwortete diese Frage am besten für mich. Ich wünschte, sie wäre nicht in einem Kommentar begraben. Dies ist nützlich für Leute wie mich, die nicht versuchen, die Lösung zu skripten (das OP hat nicht nach einem Code-Snippet gefragt).
quelle
Danke an @marc_s für die Antwort. Ich musste Daten im Vergleich zum Indexbereich kennen, also habe ich die Abfrage erweitert, um dies einzuschließen.
quelle