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.