Chercher les procédures stockées contenant un mot-clé ou un nom de champ spécifié (sql serveur)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 31 486 fois - Téléchargée 16 fois

Contenu du snippet

Parfois il est utile de savoir si une procédure stockée contient tel ou tel mot-clé. Par exemple pour savoir si un vieux champ est encore utilisé ou autre.
Pour celà, il faut utiliser les tables système de la base de données.

La table sysobject contient tous les objet de la base de données, y compris les procédures stockées. Leur type est 'P'. Le code de la procédure stockée se trouve lui dans syscomments dans le champ syscomments.text. Donc il est facile de lier ces 2 tables puis faire le tri.

Le code ci-dessous cherche le mot-clé "Keyword".

Une autre variante est d'utiliser la vue INFORMATION_SCHEMA.ROUTINES. Mais dans mon cas, moins efficace car je ne sais pas pourquoi, il rate une procédure stockée mais fonctionne aussi bien pour les fonctions.

Source / Exemple :


-- Variante table système
SELECT sys.sysobjects.name, sys.syscomments.text
FROM sys.sysobjects INNER JOIN syscomments 
ON sys.sysobjects.id = sys.syscomments.id
WHERE sys.syscomments.text LIKE '%Keyword%' 
AND sys.sysobjects.type = 'P'
ORDER BY sys.sysobjects.NAME

GO

-- Variante vue INFORMATION_SCHEMA.ROUTINES pour SP
SELECT ROUTINE_NAME, ROUTINE_DEFINITION 
FROM INFORMATION_SCHEMA.ROUTINES 
WHERE ROUTINE_DEFINITION LIKE '%Keyword%' 
AND ROUTINE_TYPE='PROCEDURE'
ORDER BY ROUTINE_NAME

GO

--Variante vue INFORMATION_SCHEMA.ROUTINES pour fonction
SELECT ROUTINE_NAME, ROUTINE_DEFINITION 
FROM INFORMATION_SCHEMA.ROUTINES 
WHERE ROUTINE_DEFINITION LIKE '%Keyword%' 
AND ROUTINE_TYPE='FUNCTION'
ORDER BY ROUTINE_NAME

Conclusion :


Comme on le voit, les tables système peuvent être très utile pour effectuer des recherches dans le code des procédures stockées et aussi bien plus.

A voir également

Ajouter un commentaire Commentaires
soldier8514 Messages postés 295 Date d'inscription vendredi 20 décembre 2002 Statut Membre Dernière intervention 24 janvier 2014 1
25 juil. 2013 à 09:37
ça va beaucoup m'aider aussi
impec, ça m'a grandement m'aidé, et ça va encore m'aider !

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.