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.
Wesley Mota
Latest posts by Wesley Mota (see all)
- Free Blackjack No Download: Appreciate Blackjack Anytime, Anywhere - novembro 25, 2024