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.