So verwenden Sie sp_msforeachDB auf dem SQL -Server

So verwenden Sie sp_msforeachDB auf dem SQL -Server
Wenn Sie mit Datenbanken arbeiten. In einem solchen Szenario gibt es eine praktische Prozedur namens sp_msforeachdb (). Mit dieser Prozedur können Sie eine Reihe von Befehlen in jeder in der SQL Server -Instanz verfügbaren Datenbank ausführen.

Mit diesem Handbuch lernen Sie, wie Sie die gespeicherte Prozedur sp_msforeachDB (), die Verwendung und verschiedene Beispiele für die Verwendung des Prozedur verwenden.

Sys.sp_msforeachdb ()

Das SP_MSForeachDB () ist eine in der Master -Datenbank verfügbare nicht verkaufte gespeicherte Prozedur. Sie können alle Datenbanken in der SQL -Serverinstanz überschreiten und SQL -Abfragen mit den angegebenen Datenbanken ausführen.

In SQL Server Management Studio können Sie dieses Verfahren anzeigen, indem Sie zur Master -Datenbank -> Programmierbarkeit -> gespeicherte Prozeduren -> System gespeicherte Prozeduren.

Wir können die Prozedursyntax wie gezeigt ausdrücken:

Declare @Command Varchar (255)
Setzen Sie @command = 'Befehlsoperationen'
Exec sp_msforeachdb @command = Befehl

Sehen wir uns nun einige Beispiele für die Verwendung des Verfahrens an.

Beispiel 1-Show Die Namen aller Datenbanken

Angenommen, Sie möchten die Namen aller Datenbanken in der SQL Server -Instanz erhalten. Sie können die Prozedur msforeachDB () verwenden, wie im folgenden Beispiel gezeigt:

Declare @Command Varchar (255)
Setzen Sie @command = 'Verwenden ? drucken db_name () ''
Exec sp_msforeachdb @command

Die obigen Abfragen sollten die Namen aller Datenbanken in der Instanz zurückgeben. Ein Beispielausgang ist wie gezeigt:

Meister
tempdb
Modell
MSDB
SalesDB
Baseballdata
Wideworldimporters
Abschlusszeit: 2021-12-14T02: 43: 45.8852391-08: 00

Beispiel 2 - Datenbankgrößen anzeigen

Obwohl es verschiedene Möglichkeiten gibt, wie Sie die Größe einer Datenbank in SQL Server erhalten können.

Betrachten Sie das unten gezeigte Beispiel:

Declare @Command Varchar (255)
Setzen Sie @command = 'verwenden [?]; Exec sp_spaceused '
Exec sp_msforeachdb @command

Mit einem einzigen Befehl können wir die Größe aller Datenbanken wie in der folgenden Beispielausgabe angezeigt:

Beispiel 3 - Zeigen Sie alle Spalten in den Datenbanken an

Um die Spalten in jeder Datenbank anzuzeigen, können Sie eine Abfrage wie im folgenden Beispiel -Snippet ausführen:

Declare @Command Varchar (255);
Setzen Sie @command = 'Name aus dem Namen aus ?.sys.Säulen'
Exec sp_msforeachdb @command

Die obige Abfrage sollte die Spalten in jeder Datenbank wie gezeigt zurückgeben:

Beispiel 4 - Alle Datenbanken verkleinern

Sie können die Größe aller Datenbanken im Server unter Verwendung der nachstehenden MSforeachDB -Prozedur verkleinern:

Declare @Command Varchar (255);
Set @command = 'dbcc ShrinkDatabase (' '' '?'', 0) ''
Exec sp_msforeachdb @command

Die obige Beispielabfrage versucht, die Größe aller Datenbanken auf dem Server zu verkleinern. Wenn Sie über eine umfassende Sammlung von Datenbanken verfügen, vermeiden Sie diese Abfrage, da sie möglicherweise lange dauern und andere Prozesse durch die Verwendung der Datenbanken blockieren können.

Beispielausgabe ist wie gezeigt:

Schließen

Schließen
In diesem Tutorial wird angezeigt, wie Sie die gespeicherte Prozedur von SP_MSForeachDB () verwenden, um SQL -Abfragen in allen Datenbanken in der SQL -Serverinstanz auszuführen.

Vielen Dank für das Lesen und bleiben Sie auf dem Laufenden, um weitere SQL Server -Tutorials auf dem Laufenden zu halten.