0

Cómo buscar una cadena de texto dentro los objetos de nuestra base de datos

Es frecuente que tengamos que encontrar un texto concreto en el código de todos los objetos de nuestras bases de datos.
Revisar uno por uno cada objeto seria una tarea complicada, en algunos entornos casi imposible.
Os dejamos una consulta que solucionaría este trabajo.

La consulta devuelve el nombre de la instancia , el de la base de datos, el nombre del objeto y el tipo de objeto que es, tambien la fecha de creación y el código completo que contiene ese objeto:

CREATE TABLE ##buscartexto (Database_Name  VARCHAR(255),Object  VARCHAR(255), Type  VARCHAR(255),[create]  datetime,text varchar (max)) 

DECLARE @command varchar(1000) 

SELECT @command = 'USE [?] 
INSERT INTO ##buscartexto 
   SELECT db_name () as Database_name,
  so .name [Objet],
  so .type_desc [Type],
  so .create_date [Create],
  sm.definition [Text]
FROM sys .objects so
INNER JOIN sys. sql_modules sm ON so.object_id = sm.object_id
WHERE  
   
    CONVERT(VARCHAR(8000),sm.definition) LIKE ''%registros%''' 

EXEC sp_MSforeachdb @command

select @@servername as instance_name,* from ##buscartexto
drop table ##buscartexto

Si la consulta devuelve muchos valores y solo necesitamos encontrar un tipo de objeto podemos utilizar la columna type_desc para filtrar.

Os recordamos que si necesitais ampliar la consulta a varias instancias podeis hacerlo con el metodo que ya explicamos en esta entrada:

¿Con qué cuenta de servicio y en qué puerto escucha tu SQL SERVER?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *