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?