top of page

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

  • Foto do escritor: CloudDB
    CloudDB
  • 18 de out. de 2023
  • 2 min de leitura

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.



 
 
 

Posts recentes

Ver tudo

Comments


Logo_quadrada.png

CLOUD DB LTDA - 28.961.479/0001-41

© 2020 Direitos Reservados CloudDB ®  O plágio é considerado crime e sua principal referência é a lei 9.610 - ♥ SEO WIX Partner - Phoenix

bottom of page