Gibt es eine einfache Möglichkeit, die Größe jeder Tabelle in jeder Datenbank auf einem MSSQL-Server aufzulisten?
Ich habe eine Abfrage in sys.tables verwendet, um Ergebnisse für eine einzelne Datenbank zu erhalten, aber wir haben> 100 Datenbanken pro Server. Daher wäre es großartig, die gleichen Ergebnisse zu erzielen, jedoch für alle Datenbanken.
Derzeit muss ich eine temporäre Liste von Datenbanken aus master.sys.databases erstellen und diese dann mit einem Cursor durchlaufen, eine Abfrage erstellen und die Ergebnisse in eine temporäre Tabelle mit einfügen EXEC sp_executeSQL @SQLString
.
sql-server
Zylindrisch
quelle
quelle
Antworten:
Wenn Sie dies für alle Ihre Datenbanken in Ihrer gesamten Umgebung bereitstellen möchten ... und es Ihnen nichts ausmacht, PowerShell zu verwenden ... müssen Sie dies auf einem Computer ausführen, auf dem mindestens SQL Server 2008 Management Studio installiert ist.
Wie die
DataSpaceUsed
SMO-Objektausgaben in "KB" gekennzeichnet, können Sie dies so ändern, dass es das Maß Ihrer Wahl ist, indem Sie einfach die abgekürzte Referenz dafür eingeben. Also wenn ich "MB" wollte :$_.DataSpaceUsed/1MB
.In der Funktion
([string[]]$server)
bedeuten die Klammern "[]", dass der Parameter ein Array von Objekten akzeptiert. Wenn Sie also Ihre Server in einer Datei aufgelistet haben, können Sie die Funktion folgendermaßen aufrufen:Ich bevorzuge die
Out-GridView
anfängliche Verwendung , um die Ausgabe zu überprüfen, und sie lässt sich für mich problemlos direkt in Excel kopieren. Sie können dies bei Bedarf auch in den anderen unterstützten PowerShell-Formaten ausgeben.Beispiel mit Screenshot, Sie können auch einfach die Server auflisten:
quelle
Aus dem Stapelüberlauf entnommen: Größe aller Tabellen in der Datenbank ermitteln
quelle
Ich habe eine Zusammenführung früherer Antworten verwendet:
quelle
Sie können jedoch versuchen,
sp_msforeachdb
einige Warnungen zu verwenden.Davon abgesehen habe ich es seit einigen Jahren erfolgreich eingesetzt.
Grundsätzlich macht es einen Cursor und ein Ersetzen auf dem? mit dem DB-Namen.
Sie können auch die Ersatzversion von Aaron Bertrand ausprobieren. Ich habe es nicht selbst ausprobiert, aber es soll besser sein.
quelle
Folgendes wird Ihre Frage lösen:
quelle