2010-11-30 3 views
7

Je souhaite rechercher un texte spécifique dans toutes les procédures/fonctions, etc. dans toutes les bases de données. J'ai réussi à créer la requête requise à partir de ce answer mais il ressemble à OBJECT_DEFINITION (OBJECT_ID (SPECIFIC_NAME)) renvoie NULL pour tous les DB sauf le courant.Rechercher des procédures/fonctions stockées dans toutes les bases de données

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

Répondre

3

Le problème est OBJECT_ID ne peut pas être utilisé de cette façon. Cela ne fonctionne que sur la base de données actuelle. Essayez de retourner ROUTINE_DEFINITION directement à partir de INFORMATION_SCHEMA.ROUTINES. Cela a une limite de 4000 caractères. Je vais essayer de trouver mon autre réponse sur SO qui donne ma solution de contournement en utilisant les vues de métadonnées MS.

Jetez un oeil à ceci:

Can you search SQL Server 2005 Stored Procedure content?

+0

Merci. Le lien montre comment utiliser sys.sql_modules. – JKJKJK

1

essayez ceci:

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

Vous devez absolument l'outil de Red-Gate SQL Search - il est GRATUIT, et absolument génial et parfaitement adapté à ce besoin.

alt text

+0

Cela vous sera utile. Merci. – JKJKJK

+0

Outil absolument incroyable, merci frère. – ron

Questions connexes