Dicas sobre desenvolvimento de software, gestão e tributações

Rede Social

1 de dezembro de 2021

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'

Ler