Executando um comando em todos os databases da instância no SQL Server

Fala pessoal!
Tudo tranquilo, né ?

Hoje vou mostrar a vocês como executar uma query em todos os databases de uma instância SQL Server. Muitas vezes isso é útil para criação de rotinas de monitoramento de espaço, rodar um checkdb em todos os bancos e muitas outras necessidades do dia-a-dia.

Para realizar essa atividade existem várias formas diferentes de programar, mas vou abordar duas das mais utilizadas

sp_MSforeachdb
A procedure sp_MSforeachdb já vem por padrão no SQL Server, mas não possui documentação oficial pela Microsoft até o momento e por isso, muita gente não sabe da sua existência ou como utilizá-la. Um dos detalhes mais importantes em sua utilização, é o wildcart ?, que irá receber o nome do database que está sendo iterado pela Stored Procedure sp_MSforeachdb.

Vamos a um exemplo bem básico que vai apenas exibir o nome de cada database:

Exibindo os datafiles de cada database

Exibindo os datafiles de cada database que contenha a palavra “Cobranca”

Exibindo o nome dos databases, schemas e tabelas que começam com Cliente na sua instância

Utilizando views de catálogo do SQL Server
A procedure de sistema sp_MSforeachdb é muito útil no dia-a-dia do DBA e bem fácil de ser utilizada, mas já vi alguns casos onde o banco ignoraalguns databases durante a iteração quando há uma sobrecarga muito grande no servidor. Por isso, vou mostrar uma outra abordagem para atender essa necessidade.

Exemplo 1:

Exemplo 2:
Após criar a SP abaixo, retorna o nome de todos os databases e os grava numa tabela temporária

Retorna o nome de todos os databases que contenham “Cobranca” no nome

Retorna o nome de todos os databases que NÃO contenham “Cobranca” no nome

Código da Stored Procedure stpExecuta_Query_Databases:

SQL, sql server, sql server 2008, sql server 2008 R2, Oracle, Oracle Database, Oracle 11g, Oracle 10g, Oracle 12c, MySQL, Firebird, Consultoria, Consultor, Programador, Programação. Desenvolvedor, Analista de Sistemas, DBA, Criação de website, Criação de Sistema Web, Vitória, Vila Velha, Guarapari, Espírito Santo, ES, Consultoria SQL em VItória, Treinamento, Curso, Prestação de serviço, prestar serviço, freelancer, freela, banco de dados, consultoria em banco de dados, consultor de banco de dados

Um comentário em “Executando um comando em todos os databases da instância no SQL Server

Deixe uma resposta