Compartilhar via


Encontrando uma Tabela sobre Todos os Bancos de Dados SQL Server

Para encontrar uma tabela entre todos os bancos de dados SQL você pode utilizar a stored procedure não documentada sp_MSForEachDB.

sp_MSForEachDB 'SELECT "?" AS db, * FROM [?].sys.tables WHERE name LIKE ''%NomeDaTabelaProcurada%'''

Como alternativa, em vez de utilizar a stored procedure sp_MSForEachDB, você pode simplificar criando esta consulta:

DECLARE  @SQL  NVARCHAR(max)
 
SET  @SQL = stuff((
            SELECT '
UNION
SELECT ' + quotename(NAME, '''') + ' AS Banco_de_Dados, @NomeDaTabela AS Nome_Da_Tabela
FROM ' + quotename(NAME) + '.sys.tables WHERE NAME LIKE ''%'' + @NomeDaTabela + ''%'''
            FROM  sys.databases
            ORDER  BY  NAME
            FOR XML PATH('')
                ,type
            ).value('.', 'nvarchar(max)'), 1, 8, '')
 
--PRINT @SQL;
 
EXECUTE sp_executeSQL @SQL
    ,N'@NomeDaTabela   varchar(30)'
    ,@NomeDaTabela = 'items'

Outros Idiomas