SQL Server: Como pesquisar tabelas em todos os bancos de dados
Nesse post vou mostrar um script para pesquisar as tabelas de todos os bancos de dados que contenham um nome ou parte de nome específico. Ao final vai mostrar um resumo de quantas ocorrências da tabela procurada foram encontradas em cada banco.
DECLARE @tabelas TABLE(nome_database SYSNAME,
nome_schema SYSNAME,
nome_tabela SYSNAME);
DECLARE @database SYSNAME;
SET NOCOUNT ON;
DECLARE bases CURSOR LOCAL FAST_FORWARD FOR
SELECT d.name
FROM sys.databases d
where d.state = 0;
OPEN bases
FETCH NEXT FROM bases INTO @database
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO @tabelas(nome_database,
nome_schema,
nome_tabela)
EXEC('SELECT ''' + @database + ''',
s.name,
t.name
FROM ' + @database + '.sys.tables t
INNER JOIN ' + @database + '.sys.schemas s ON s.schema_id = t.schema_id
WHERE t.name LIKE ''%cliente''');
FETCH NEXT FROM bases INTO @database;
END;
CLOSE bases;
DEALLOCATE bases;
SELECT *
FROM @tabelas;
-- Resumo
SELECT nome_database,
count(1) AS quantidade
FROM @tabelas t
GROUP BY nome_database;
A parte que você deve alterar para o nome da sua tabela fica na linha
WHERE t.name LIKE ''%cliente''');
No caso estou procurando todas as tabelas que terminem com o texto 'cliente'