Jak używać SP_MSFOREACHDB w SQL Server

Jak używać SP_MSFOREACHDB w SQL Server
Podczas pracy z bazami danych napotkasz instancje, w których musisz wykonać określony zestaw zapytań we wszystkich bazach danych. W takim scenariuszu istnieje przydatna procedura o nazwie SP_MSFOREACHDB (). Ta procedura umożliwia wykonanie zestawu poleceń w każdej bazie danych dostępnych w instancji SQL Server.

Korzystając z tego przewodnika, dowiesz się, jak korzystać z procedury przechowywanej SP_MSFOREACHDB (), jak go używać i różne przykłady korzystania z procedury.

Sys.SP_MSFOREACHDB ()

SP_MSFOREACHDB () to nieudokumentowana procedura przechowywana dostępna w głównej bazie danych. Umożliwia zapętlenie wszystkich baz danych w instancji SQL Server i wykonywanie zapytań SQL w stosunku do określonych baz danych.

W SQL Server Management Studio można wyświetlić tę procedurę, nawigując do głównej bazy danych -> Programowalność -> Procedury przechowywane -> Procedury przechowywane systemem.

Możemy wyrazić składnię procedury, jak pokazano:

Deklaruj @Command Varchar (255)
Set @Command = 'Operacje poleceń'
Exec sp_msforEachdb @command = Command

Spójrzmy teraz na kilka przykładów korzystania z procedury.

Przykład 1-show nazwy wszystkich baz danych

Załóżmy, że chcesz uzyskać nazwy wszystkich baz danych w instancji SQL Server; Możesz użyć procedury MSFOREACHDB (), jak pokazano w poniższym przykładzie:

Deklaruj @Command Varchar (255)
SET @Command = 'Użyj ? Wydrukuj db_name () '
Exec sp_msforEachdb @Command

Powyższy zestaw zapytań powinien zwrócić nazwy wszystkich baz danych w instancji. Przykładem jest to, jak pokazano:

gospodarz
TEMPDB
Model
MSDB
Salesdb
Baseballdata
Szeroko powiększone
Czas ukończenia: 2021-12-14T02: 43: 45.8852391-08: 00

Przykład 2 - Pokaż rozmiary bazy danych

Chociaż istnieją różne sposoby użycia do uzyskania rozmiaru bazy danych na SQL Server, w tym przykładzie użyjemy procedury SP_SPACEUSUS.

Rozważ przykład pokazany poniżej:

Deklaruj @Command Varchar (255)
Set @command = 'Użyj [?]; exec sp_spaceused '
Exec sp_msforEachdb @Command

Korzystając z pojedynczego polecenia, możemy wyświetlić rozmiar wszystkich baz danych, jak pokazano na przykładzie poniżej:

Przykład 3 - Pokaż wszystkie kolumny w bazach danych

Aby wyświetlić kolumny w każdej bazie danych, możesz wykonać zapytanie, jak pokazano na przykładowym fragmencie poniżej:

Deklaruj @Command Varchar (255);
SET @Command = 'Wybierz nazwę z ?.Sys.kolumny '
Exec sp_msforEachdb @Command

Powyższe zapytanie powinno zwrócić kolumny w każdej bazie danych, jak pokazano:

Przykład 4 - zmniejsz wszystkie bazy danych

Możesz zmniejszyć rozmiar wszystkich baz danych na serwerze za pomocą procedury MSFOREACHDB, jak pokazano poniżej:

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

Powyższe przykładowe zapytanie spróbuje zmniejszyć rozmiar wszystkich baz danych na serwerze. Jeśli masz kompleksowy zbiór baz danych, unikaj używania tego zapytania, ponieważ może to zająć dużo czasu i zablokować inne procesy korzystania z baz danych.

Przykładowe dane wyjściowe to jak pokazano:

Zamknięcie

Zamknięcie
Ten samouczek pokazuje, jak korzystać z procedury przechowywanej SP_MSOREACHDB () do wykonywania zapytań SQL we wszystkich bazach danych w instancji SQL Server.

Dziękujemy za przeczytanie i bądź na bieżąco z więcej samouczków SQL Server.