SQL Server: Localizar Procedures, Views e Funções 🔍

SQL Server: Localizar Procedures

Este script SQL foi desenvolvido para localizar objetos específicos dentro de um banco de dados SQL Server com base em um nome ou conteúdo particular. Ele permite a busca em procedimentos armazenados, views e funções, facilitando a identificação de objetos que contenham determinados nomes ou texto no corpo desses objetos.

O exemplo a seguir executa a busca em procedimentos armazenados. No entanto, ele pode ser adaptado para buscar views ou funções, alterando a condição do filtro "AND A.TYPE" para 'V' (views) ou 'FN' (funções).


 

⚙️ Objetivo e Funcionamento

O script permite realizar buscas de nomes de objetos ou conteúdos específicos dentro desses objetos. As buscas podem ser feitas nos seguintes critérios:

  • Por Nome: Busca pelo nome do objeto (exemplo: procedimentos, funções).
  • Por Texto: Busca por texto específico presente no corpo do objeto (como código ou comentário).

Você pode ajustar os filtros conforme necessário para procurar:

  • Procedimentos Armazenados (Tipo P ).
  • Views (Tipo V ).
  • Funções (Tipo FN ).

 

📜 Exemplo de Script:

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


SELECT distinct 
    'Pelo_Nome_do_Obj_'+@column AS 'LOCALIZAR',
A.NAME, A.TYPE  --, B.TEXT
  FROM SYSOBJECTS  A (nolock)
  JOIN SYSCOMMENTS B (nolock) 
    ON A.ID = B.ID
WHERE 
   A.NAME LIKE @column        --- Informação a ser procurada no corpo da procedure, funcao ou view
  AND A.TYPE = 'P'            --- Tipo de objeto a ser localizado no caso procedure
  UNION ALL
SELECT distinct top 2
  'No_Texto_do_Obj_'+@column AS 'LOCALIZAR',
A.NAME, A.TYPE  --, B.TEXT
  FROM SYSOBJECTS  A (nolock)
  JOIN SYSCOMMENTS B (nolock) 
    ON A.ID = B.ID
WHERE 
   B.TEXT LIKE @column     --- Informação a ser procurada no corpo da procedure, funcao ou view
  AND A.TYPE = 'P' 

 

🧑‍💻 Explicação do Script:

  • @column: Este é o parâmetro onde você define o valor ou expressão de busca. Por exemplo, 'Crea%' localiza objetos que contêm "Crea" no nome.
  • @Tab: Similar ao @column , você pode definir uma expressão de busca para o conteúdo de tabelas, se necessário.
  • SYSOBJECTS: A tabela de sistema que contém informações sobre os objetos do banco de dados (como procedimentos armazenados, views, funções, etc.).
  • SYSCOMMENTS: Tabela de sistema que contém os comentários e o corpo dos objetos, como procedimentos e funções.
  • JOIN: A consulta realiza uma junção entre as tabelas SYSOBJECTS e SYSCOMMENTS para obter o texto completo dos objetos (como o código ou comentário).
  • A.TYPE = 'P': Limita a busca a procedimentos armazenados. Para buscar views, altere o filtro para 'V' , ou para funções, altere para 'FN' .
  • DISTINCT e UNION ALL : Garantem que os resultados não se repitam e que ambos os tipos de busca (por nome e por conteúdo) sejam combinados no mesmo resultado.

🔧 Usos e Benefícios:

Este script é extremamente útil quando você precisa:

  • Localizar Procedimentos Armazenados com base em parte de seu nome ou conteúdo.
  • Buscar por texto específico dentro de procedimentos, funções ou views.
  • Verificar o conteúdo de objetos para identificar dependências ou códigos de interesse.
  • Gerenciar e Auditar o banco de dados, garantindo que objetos estejam corretamente definidos e não contenham informações desnecessárias.

💡 Considerações Finais:

Este script pode ser facilmente adaptado para buscar views, funções ou outros tipos de objetos no banco de dados. Basta ajustar o filtro de tipo de objeto na condição AND A.TYPE . Além disso, ele pode ser modificado para incluir mais tipos de busca, como buscar por texto específico em triggers ou tabelas.

📈 Exemplo de Modificação:

  • Para buscar views, altere o filtro para:

AND A.TYPE = 'V' -- Para Views

 

  • Para buscar funções, altere para:

AND A.TYPE = 'FN' -- Para Funções


 

🚀 Conclusão

Este script SQL oferece uma maneira eficiente e flexível de localizar procedimentos armazenados, views e funções dentro de um banco de dados SQL Server. Ele é uma excelente ferramenta para auditoria, manutenção e monitoramento de objetos em bancos de dados de grandes dimensões, ajudando na gestão de seu conteúdo e estrutura.

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

Categoria: SQL Server