top of page
Foto do escritorCloudDB

PESQUISAR UM DETERMINADO TEXTO EM TODAS AS PROCEDURES EM TODOS OS BANCOS DE DADOS


EXEC sp_MSforeachdb '

USE [?];

SELECT DISTINCT

DB_NAME() AS Database_Name,

o.name AS Object_Name,

o.type_desc

FROM sys.sql_modules m

INNER JOIN

sys.objects o

ON m.object_id = o.object_id

WHERE m.definition Like ''%nota%''';


O código executa uma consulta em todas as bases de dados disponíveis em um servidor SQL Server. Vou explicar o que cada parte do código faz:


EXEC sp_MSforeachdb - Isso inicia um procedimento armazenado estendido chamado sp_MSforeachdb. Esse procedimento armazenado é uma ferramenta do SQL Server que permite iterar por todas as bases de dados no servidor e executar um comando em cada uma delas.


'USE [?];' - Dentro do procedimento sp_MSforeachdb, ele começa por alternar para o contexto da base de dados atual. O ?[ é um marcador que será substituído pelo nome da base de dados atual durante a iteração. Isso significa que o código dentro das aspas simples será executado em cada base de dados encontrada.


A partir daqui, o código executa uma consulta na base de dados atual:


SELECT DISTINCT - Isso inicia a seleção de registros da tabela resultante. O DISTINCT garante que apenas registros únicos sejam retornados.


DB_NAME() AS Database_Name - Isso seleciona o nome da base de dados atual e o renomeia como Database_Name.


o.name AS Object_Name - Isso seleciona o nome do objeto da base de dados atual (provavelmente tabelas ou vistas) e o renomeia como Object_Name.


o.type_desc - Isso seleciona a descrição do tipo de objeto da base de dados atual (por exemplo, "TABELA", "VISTA", etc.).


FROM sys.sql_modules m INNER JOIN sys.objects o ON m.object_id = o.object_id - Isso faz um JOIN entre duas tabelas do sistema sys.sql_modules e sys.objects. O sys.sql_modules contém a definição (código fonte) dos objetos no banco de dados, enquanto o sys.objects contém informações sobre todos os objetos do banco de dados. O JOIN é feito com base no object_id, que é uma chave primária comum entre as duas tabelas.


WHERE m.definition LIKE '%nota%' - Isso filtra os resultados para incluir apenas os objetos cujas definições (código fonte) contenham a palavra "nota". O operador LIKE é usado com % para encontrar qualquer ocorrência da palavra "nota" em qualquer lugar da definição do objeto.


Portanto, o código em questão percorre todas as bases de dados no servidor SQL Server e seleciona informações sobre objetos cujas definições contenham a palavra "nota". O resultado será uma lista de objetos de banco de dados que atendem a esse critério em todas as bases de dados disponíveis.


Veja um exemplo feito com esse código em um ambiente de teste na figura abaixo.



80 visualizações0 comentário

Posts recentes

Ver tudo

Comments


bottom of page