Comment rechercher un texte dans toutes les procédures stockées sur SQL Server ?

Chargement de votre vidéo
"Comment rechercher un texte dans toutes les procédures stockées sur SQL Server ?"

Présentation de deux méthodes pour retrouver des procédures stockées sur une base SQL Server à partir de leur définition.

Si vous utilisez des procédures dans une base de données SQL Server, alors il peut être utile de pouvoir les retrouver à partir de la définition que vous lui avez ajoutée. Il existe pour cela 2 méthodes possibles. La première consiste à utiliser la vue sys.procedures, qui contient les procédures créées dans la base de données.

SELECT name
FROM sys.procedures
WHERE Object_definition(object_id) LIKE '%chaine%'

Vous pouvez également utiliser 2 vues pour faire une recherche dans la définition de la procédure : les vues sys_sql_modules et sys_objects. La vue sys_sql_modules contient tous les objets qui sont des modules définis par le langage SQL pour la base de données SQL Server. Les procédures en font partie. La vue sys_objects contient tous les objets créés par les utilisateurs. En ajoutant une jointure entre les 2 vues, on obtient la procédure, et on récupère au passage son type pour contrôler s'il s'agit bien d'une procédure.

SELECT DISTINCT 
 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 '%chaine%';

Si vous recherchez un caractère spécial utilisé dans le langage transact-SQL, comme le crochet, vous devez utiliser l'antislash . De cette manière, le crochet sera interprété, non pas comme un caractère spécial mais comme un caractère simple :

SELECT name
FROM sys.procedures
WHERE Object_definition(object_id) LIKE '%[chaine]%'

SQL