2010-11-30 7 views
7

Deseo buscar texto específico en todos los procedimientos/funciones, etc. en todas las bases de datos. Pude crear la consulta requerida desde este answer pero parece que OBJECT_DEFINITION (OBJECT_ID (SPECIFIC_NAME)) devuelve NULL para todos los DB excepto el actual.Búsqueda de procedimientos/funciones almacenados en todas las bases de datos

sp_msforeachdb 'SELECT ''?'' AS DB, SPECIFIC_NAME, OBJECT_DEFINITION(OBJECT_ID(SPECIFIC_NAME)) FROM [?].INFORMATION_SCHEMA.ROUTINES' 

Respuesta

3

El problema es OBJECT_ID no se puede utilizar de esa manera. Solo funciona en la base de datos actual. Intente devolver ROUTINE_DEFINITION directamente desde INFORMATION_SCHEMA.ROUTINES. Esto tiene un límite de 4000 caracteres. Trataré de encontrar mi otra respuesta en SO que da mi solución utilizando las vistas de metadatos de MS.

Tener un vistazo a esto:

Can you search SQL Server 2005 Stored Procedure content?

+0

Gracias. El enlace muestra cómo usar sys.sql_modules. – JKJKJK

1

intente esto:

select * from syscomments where [text] like '%yourKeyword%' 
12

Es imprescindible que la herramienta de Red-Gate SQL Search - es GRATIS, y absolutamente genial y perfectamente adecuado para esta necesidad

alt text

+0

Esto será útil. Gracias. – JKJKJK

+0

Herramienta absolutamente increíble, gracias hermano. – ron

Cuestiones relacionadas