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]%'