Запрос для списка всех хранимых процедур

318
задан p.campbell 27 May 2015 в 06:14
поделиться

6 ответов

Как Mike заявил, лучший способ состоит в том, чтобы использовать information_schema. Пока Вы не находитесь в основной базе данных, системные хранимые процедуры не будут возвращены.

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

, Если по некоторым причинам у Вас были несистемные хранимые процедуры в основной базе данных, Вы могли бы использовать запрос (это отфильтрует БОЛЬШИНСТВО системных хранимых процедур):

select * 
  from master.information_schema.routines 
 where routine_type = 'PROCEDURE' 
   and Left(Routine_Name, 3) NOT IN ('sp_', 'xp_', 'ms_')
476
ответ дан Doug Porter 23 November 2019 в 01:02
поделиться
select *  
  from dbo.sysobjects
 where xtype = 'P'
   and status > 0
1
ответ дан Doug Porter 23 November 2019 в 01:02
поделиться

К сожалению INFORMATION_SCHEMA не содержит информацию о системе procs.

SELECT *
  FROM sys.objects
 WHERE objectproperty(object_id, N'IsMSShipped') = 0
   AND objectproperty(object_id, N'IsProcedure') = 1
3
ответ дан Doug Porter 23 November 2019 в 01:02
поделиться

При использовании SQL Server 2005, следующее будет работать:

select *
  from sys.procedures
 where is_ms_shipped = 0
9
ответ дан Doug Porter 23 November 2019 в 01:02
поделиться

От моего понимания "предпочтительного" метода должен использовать information_schema таблицы:

select * 
  from information_schema.routines 
 where routine_type = 'PROCEDURE'
26
ответ дан Doug Porter 23 November 2019 в 01:02
поделиться
SELECT name, 
       type
  FROM dbo.sysobjects
 WHERE (type = 'P')
101
ответ дан Doug Porter 23 November 2019 в 01:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: