Como usar o sp_msforEachdb no servidor SQL

Como usar o sp_msforEachdb no servidor SQL
Ao trabalhar com bancos de dados, você encontrará instâncias em que precisa executar um conjunto específico de consultas em todos os bancos de dados. Existe um procedimento útil chamado sp_msforeachdb () em tal cenário. Este procedimento permite executar um conjunto de comandos em todos os bancos de dados disponíveis na instância do SQL Server.

Usando este guia, você aprenderá como usar o procedimento armazenado sp_msforeachdb (), como usá -lo e vários exemplos de como usar o procedimento.

Sys.sp_msforEachdb ()

O sp_msforeachdb () é um procedimento armazenado sem documentos disponíveis no banco de dados mestre. Ele permite que você pague todos os bancos de dados na instância do SQL Server e execute consultas SQL contra os bancos de dados especificados.

No SQL Server Management Studio, você pode visualizar este procedimento navegando para o banco de dados mestre -> Programabilidade -> Procedimentos armazenados -> Procedimentos armazenados do sistema.

Podemos expressar a sintaxe do procedimento como mostrado:

Declare @Command Varchar (255)
Definir @Command = 'Operações de comando'
EXEC SP_MSFOREACHDB @comando = comando

Vejamos agora alguns exemplos de usar o procedimento.

Exemplo 1 Show dos nomes de todos os bancos de dados

Suponha que você queira obter os nomes de todos os bancos de dados na instância do SQL Server; Você pode usar o procedimento msForEachdb (), conforme mostrado no exemplo abaixo:

Declare @Command Varchar (255)
Set @command = 'use ? imprima db_name () '
EXEC SP_MSFOREACHDB @Command

O conjunto de consultas acima deve retornar os nomes de todos os bancos de dados na instância. Um exemplo de saída é como mostrado:

mestre
tempdb
modelo
msdb
Salesdb
Baseballdata
WideWorldImporters
Hora de conclusão: 2021-12-14T02: 43: 45.8852391-08: 00

Exemplo 2 - Mostrar tamanhos de banco de dados

Embora existam várias maneiras de usar para obter o tamanho de um banco de dados no SQL Server, neste exemplo, usaremos o procedimento SP_SPACEUSED.

Considere o exemplo mostrado abaixo:

Declare @Command Varchar (255)
Set @command = 'use [?]; EXEC SP_SPACEUSED '
EXEC SP_MSFOREACHDB @Command

Usando um único comando, podemos visualizar o tamanho de todos os bancos de dados, conforme mostrado na saída de exemplo abaixo:

Exemplo 3 - Mostre todas as colunas nos bancos de dados

Para visualizar as colunas em cada banco de dados, você pode executar uma consulta, como mostrado no exemplo de snippet abaixo:

Declare @Command Varchar (255);
Set @command = 'Selecione o nome ?.sys.colunas
EXEC SP_MSFOREACHDB @Command

A consulta acima deve retornar as colunas em cada banco de dados, como mostrado:

Exemplo 4 - encolher todos os bancos de dados

Você pode encolher o tamanho de todos os bancos de dados no servidor usando o procedimento msForEachdb, como mostrado abaixo:

Declare @Command Varchar (255);
Set @command = 'dbcc shrinkdatabase (' '?'', 0) '
EXEC SP_MSFOREACHDB @Command

A consulta de exemplo acima tentará reduzir o tamanho de todos os bancos de dados no servidor. Se você tiver uma coleção abrangente de bancos de dados, evite usar esta consulta, pois pode levar muito tempo e bloquear outros processos de usar os bancos de dados.

Exemplo de saída é como mostrado:

Fechamento

Fechamento
Este tutorial mostra como usar o procedimento armazenado sp_msforeachdb () para executar consultas SQL em todos os bancos de dados na instância do SQL Server.

Obrigado pela leitura e fique atento para mais tutoriais do SQL Server.