69 votes

Requête qui renvoie la liste de toutes les procédures stockées dans une base de données MS SQL.

Existe-t-il une requête qui renvoie les noms de toutes les procédures stockées d'une base de données MS SQL (en excluant "System Stored Procedures", ce qui serait appréciable) ?

102voto

Dave_H Points 1471

Comme Mike l'a dit, le meilleur moyen est d'utiliser information_schema . Tant que vous n'êtes pas dans la base de données principale, les procédures stockées du système ne seront pas renvoyées.

select * 
  from DatabaseName.information_schema.routines 
 where routine_type = 'PROCEDURE'

Si, pour une raison quelconque, vous aviez des procédures stockées non système dans la base de données principale, vous pourriez utiliser la requête (cela filtrera la plupart des procédures stockées système) :

select * 
  from master.information_schema.routines 
 where routine_type = 'PROCEDURE' 
   and Left(Routine_Name, 3) NOT IN ('sp_', 'xp_', 'ms_')

12voto

Kevin Points 2548
SELECT name, 
       type
  FROM dbo.sysobjects
 WHERE (type = 'P')

9voto

Mike Points 978

D'après ce que j'ai compris, la méthode "préférée" consiste à utiliser les tables information_schema :

select * 
  from information_schema.routines 
 where routine_type = 'PROCEDURE'

5voto

cbeuker Points 685

Si vous utilisez SQL Server 2005, la procédure suivante fonctionnera :

select *
  from sys.procedures
 where is_ms_shipped = 0

3voto

Cade Roux Points 53870

Malheureusement INFORMATION_SCHEMA ne contient pas d'informations sur les procs du système.

SELECT *
  FROM sys.objects
 WHERE objectproperty(object_id, N'IsMSShipped') = 0
   AND objectproperty(object_id, N'IsProcedure') = 1

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X