SQL Server: Localizar Tabelas e Campos Pelo Nome 🔍

Este conjunto de scripts SQL foi desenvolvido para localizar campos em tabelas e, em alguns casos, também em procedimentos armazenados no SQL Server, com base em critérios específicos. Os scripts ajudam a identificar tabelas e colunas que correspondam a um nome de coluna fornecido (variável @column ) e, em alguns casos, também a um padrão de nome de tabela (variável @Tab ). Cada script oferece uma abordagem diferente para localizar informações no banco de dados, com exemplos práticos para atender a diferentes necessidades de busca.


1️⃣ Localização de Campos em Tabelas e Procedimentos

🔍 Objetivo: Este script busca campos cujo nome corresponde ao valor da variável @column em tabelas e procedimentos armazenados. Ele é útil para identificar onde determinados campos estão sendo usados em várias tabelas e também em procedimentos armazenados. O script retorna informações detalhadas sobre o nome da tabela, tipo do objeto (se é uma tabela ou procedimento), nome do campo, tipo de dados, tamanho, permissões de nulidade e collation (configuração de ordenação de texto).

💡 Exemplo: O script abaixo é útil quando você deseja identificar onde o campo Crea está sendo utilizado, seja em tabelas ou procedimentos armazenados:

DECLARE @column sysname, @Tab sysname --, @BuscaProcedure
SET @column = '%Crea%' --(Utilizado em Tabela e Procedure)
SET @Tab = 'C%' --(Utilizado em Tabela Somente)

SELECT      
    t.name as Tabela, 
    type TipoObj ,
    c.name as Nome_Campo,  
    ty.name AS Tipo_Campo , 
    c.max_length as Tam_Campo, --c.precision as Precisao , 
    c.is_nullable as 'Perm. Nulo', 
    c.collation_name 
FROM 
    sys.tables AS t
        JOIN sys.schemas AS s 
            ON s.schema_id = t.schema_id
        JOIN sys.columns AS c
            ON c.object_id = t.object_id
        JOIN sys.types AS ty 
            ON ty.system_type_id = c.system_type_id
                AND ty.user_type_id = c.user_type_id
WHERE 
   c.name LIKE @column AND
   t.name LIKE @Tab AND
   c.name not like '%cAR%'
ORDER BY 3, 4


 

2️⃣ Localização de Campos por Nome em Tabelas

🔍 Objetivo: Este script foca na busca de campos dentro de tabelas específicas, procurando por nomes que correspondam ao valor da variável @column . Ele retorna dados essenciais como o nome da tabela, o nome da coluna, tipo de dados, comprimento e precisão do campo. Esse script é ideal quando você quer realizar uma busca em tabelas específicas, especialmente quando conhece o nome das tabelas envolvidas.

💡 Exemplo: O script abaixo permite buscar todas as colunas chamadas Crea dentro de tabelas que comecem com "C". Ele é útil para realizar uma pesquisa direta em campos de tabelas específicas.

SELECT    
    b.name AS TABELA, 
    a.name AS COLUNA, 
    a.printfmt, 
    a.xtype, a.length, 
    a.xprec
FROM 
  dbo.syscolumns a JOIN 
  dbo.sysobjects b ON a.id = b.id
WHERE
    a.name LIKE @column AND
    b.name LIKE @tab AND
    b.xtype = 'U'
ORDER BY tabela


 

3️⃣ Localização de Campos em Tabelas (Alternativo)

🔍 Objetivo: Este script utiliza uma abordagem alternativa para realizar a busca de campos em tabelas. Ele usa as tabelas sys.sysobjects e sys.all_columns , fornecendo um método eficiente para buscar campos dentro de tabelas do banco de dados. A principal diferença aqui é que ele usa as visualizações do sistema sys.all_columns , o que pode oferecer maior flexibilidade em certos cenários.

💡 Exemplo: O script abaixo busca por todos os campos cujo nome corresponde ao valor fornecido pela variável @column , utilizando uma junção entre sys.sysobjects e sys.all_columns . Essa abordagem é útil quando se quer pesquisar rapidamente todos os campos dentro das tabelas no banco de dados.

SELECT 
    T.name AS Tabela, 
    C.name AS Coluna
FROM 
    sys.sysobjects    AS T (NOLOCK) 
        INNER JOIN sys.all_columns AS C (NOLOCK)
            ON T.id = C.object_id AND T.XTYPE = 'u' 
WHERE 
    C.NAME LIKE @column
ORDER BY 
    T.name ASC


 

📝 Considerações Finais

Esses scripts são ferramentas poderosas para localizar campos em tabelas e procedimentos armazenados dentro do SQL Server. A flexibilidade das abordagens permite que você adapte as buscas de acordo com suas necessidades específicas, como a busca por colunas em tabelas específicas ou a busca por campos em qualquer tabela que corresponda a um padrão.

🔧 Personalização: Você pode facilmente personalizar esses scripts ajustando os valores das variáveis @column e @Tab para refletir diferentes critérios de busca, como buscar campos por prefixo de nome de tabela ou nome de coluna.

🧰 Adaptação: Dependendo do seu caso, você pode também ajustar os filtros WHERE ou adicionar mais colunas de retorno para complementar a busca conforme a necessidade do seu projeto.

Essas ferramentas são essenciais para exploração e análise de dados no banco de dados SQL Server, ajudando a otimizar e organizar consultas de forma mais eficiente.

Data de Publicação: 21-10-2023

Categoria: SQL Server