Dicas SQL Server

Executar o mesmo comando para todos os bancos de dados no SQL Server.

Veja como executar o mesmo comando para todos os bancos de dados no SQL Server.
Veja como executar o mesmo comando para todos os bancos de dados no SQL Server.

Veja como executar o mesmo comando para todos os bancos de dados no SQL Server.

Problema: Preciso executar um mesmo comando para todas os meus bancos de dados em uma instância SQL Server, mas hoje o que eu normalmente faço é acessar todos os bancos de dados manualmente para executar esse comando.

Solução: Para você executar um mesmo comando em todos os bancos de dados simultaneamente, você precisa conhecer a procedure sp_MSforeachdb

EXEC sp_MSforeachdb @command

@command é uma variável do tipo string.

O comando abaixo retorna as 10 primeiras tabelas em cada banco de dados ordenado por nome da tabela.

DECLARE @command varchar(1000) 
SELECT @command = 'USE ? SELECT TOP 10 name FROM sysobjects WHERE xtype = ''U'' ORDER BY name' 
EXEC sp_MSforeachdb @command

Caso você não queira declarar uma variável para colocar nela o texto do comando, você pode alternativamente colocar o comando diretamente da seguinte forma:

EXEC sp_MSforeachdb 'USE ? SELECT TOP 10 name FROM sysobjects WHERE xtype = ''U'' ORDER BY name'

Criar um objeto em cada banco de dados com um simples comando:

Se você deseja executar um comando DDL para todas as bases de dados, você poderá executar o comando abaixo:

DECLARE @command varchar(1000)

SELECT @command = 'IF ''?'' NOT IN(''master'', ''model'', ''msdb'', ''tempdb'') 
BEGIN USE ? EXEC(''CREATE PROCEDURE Proc_UsuariosDoSQL AS SELECT uid, name, createdate, updatedate FROM sys.sysusers ORDER BY name'') END'

EXEC sp_MSforeachdb @command

Como você pode observar, há itens adicionais a serem levados em consideração ao limitar o escopo da procedure sp_MSforeachdb, especialmente ao criar ou modificar objetos. Você também deve definir o código para executar se a instrução IF for verdadeira usando palavras-chave T-SQL BEGIN e END. Você deve tomar nota que o USE? Declaração está contida no bloco BEGIN … END. É importante lembrar as principais regras T-SQL. Nesse caso, a regra de que ao criar uma procedure, a frase CREATE PROCEDURE deve ser a primeira linha de código a ser executada. Para fazer isso, você pode encapsular o código CREATE PROCEDURE dentro de uma função EXEC.

Executar o mesmo comando para todos os bancos de dados no SQL Server.
The following two tabs change content below.

Wesley Mota

DBA SQL Server
Profissional graduado em Banco de Dados e Sistemas de Informação com mais de 7 anos de experiência em empresas de software. Certificado MCSA Microsoft SQL Server possui intensa vivência em administração de banco de dados, Tunning, Performance SQL Server, levantamento de melhorias e monitoramento de banco de dados e servidores SQL Server. Consultoria SQL Server em diversos clientes no Brasil e ao redor do mundo. Escritor no blog dbasqlserverbr.com.br/blog. Onde compartilha conhecimento, experiências e dicas de performance para DBAs SQL Server. Conhecimentos em Oracle e ambientes de alta disponibilidade. Desenvolvimento de softwares web e mobile.Gerenciamento de equipe e projetos.

Latest posts by Wesley Mota (see all)