Что запрос может вернуть имена всех хранимых процедур в базе данных SQL Serverзапросов перечислить все хранимые процедуры
Если запрос может исключить системные хранимые процедуры, которые были бы еще более полезным.
Что запрос может вернуть имена всех хранимых процедур в базе данных SQL Serverзапросов перечислить все хранимые процедуры
Если запрос может исключить системные хранимые процедуры, которые были бы еще более полезным.
Как заявил Майк, лучший способ заключается в использовании information_schema
. Пока вы не находитесь в основной базе данных, системные хранимые процедуры не будут возвращены.
select *
from DatabaseName.information_schema.routines
where routine_type = 'PROCEDURE'
Если по каким-то причинам была несистемной хранимых процедур в основной базе данных, можно использовать запрос (это будет отфильтровывать MOST хранимых процедур системы):
select *
from master.information_schema.routines
where routine_type = 'PROCEDURE'
and Left(Routine_Name, 3) NOT IN ('sp_', 'xp_', 'ms_')
select *
from dbo.sysobjects
where xtype = 'P'
and status > 0
статус не кажется,> 0 различать системные хранимые процедуры и созданные – 2008-10-20 18:56:17
Хмм , Это для нас - я не знаю, почему. – 2008-10-20 19:02:22
Любой, кто использует SQL Server 2005 или новее, должен отойти от представлений `dbo.sys * '. Этот запрос также отфильтровывает хранимые процедуры CLR. – 2015-01-08 15:29:54
SELECT name,
type
FROM dbo.sysobjects
WHERE (type = 'P')
Это работало для меня в общей среде в MS-SQL 2008; предыдущие два не ... – Realto619 2014-11-25 16:49:36
Любой, кто использует SQL Server 2005 или новее, должен отойти от представлений `dbo.sys * '. Этот запрос также: отфильтровывает хранимые процедуры CLR, не отфильтровывает системные сохраненные procs и возвращает [type], когда известно, что [type] всегда будет «P», поскольку это условие WHERE. – 2015-01-08 15:25:28
В моем понимании "предпочтительный" метод заключается в использовании таблиц information_schema:
select *
from information_schema.routines
where routine_type = 'PROCEDURE'
возвращенные записи, похоже, не имеют возможности различать системные хранимые процедуры. – 2008-10-20 18:57:04
К сожалению INFORMATION_SCHEMA
Безразлично» t содержит информацию о системных процессах.
SELECT *
FROM sys.objects
WHERE objectproperty(object_id, N'IsMSShipped') = 0
AND objectproperty(object_id, N'IsProcedure') = 1
Зачем вам использовать это вместо `sys.procedures где is_ms_shipped = 0`? И зачем вы запускаете функцию `objectproperty (object_id, N'IsMSShipped ')` для каждой строки, когда есть поле `is_ms_shipped`, которое содержит это значение? В тех же строках, зачем запускать эту функцию снова, когда `[type] IN ('P', 'PC')` делает то же самое? Этот метод излишне сложный и неэффективный. – 2015-01-08 16:03:24
Если вы используете SQL Server 2005 следующие будут работать:
select *
from sys.procedures
where is_ms_shipped = 0
это даст неправильный результат и включит систему, подобную диаграмме хранимой процедуры (sp_upgraddiagrams) в sql 2008 – HaveNoDisplayName 2015-01-08 14:25:36
@Piyush Истинно, что она вернет диаграмму procs, но кто-то _might_ не считает их «системными» процессами, так как они не пришли со стандартной установкой. O.P. не указал, как обращаться с тем, чтобы не отфильтровывать их не обязательно неправильно. – 2015-01-08 16:07:20
Это также может помочь перечислить процедуры, за исключением системных процедур:
select * from sys.all_objects where type='p' and is_ms_shipped=0
Это список всех вещей что вы хотите
В Sql Server 2005, 2008, 2012:
Use [YourDataBase]
EXEC sp_tables @table_type = "'PROCEDURE'"
EXEC sp_tables @table_type = "'TABLE'"
EXEC sp_tables @table_type = "'VIEW'"
ИЛИ
SELECT * FROM information_schema.tables
SELECT * FROM information_schema.VIEWS
Ниже будет возвращать все процедуры в выбранной базе данных
SELECT * FROM sys.procedures
Я написал эту простую TSQL перечислить текст всех хранимых процедур. Обязательно подставьте свое имя базы данных в поле.
use << database name >>
go
declare @aQuery nvarchar(1024);
declare @spName nvarchar(64);
declare allSP cursor for
select p.name from sys.procedures p where p.type_desc = 'SQL_STORED_PROCEDURE' order by p.name;
open allSP;
fetch next from allSP into @spName;
while (@@FETCH_STATUS = 0)
begin
set @aQuery = 'sp_helptext [Extract.' + @spName + ']';
exec sp_executesql @aQuery;
fetch next from allSP;
end;
close allSP;
deallocate allSP;
Это будет возвращено все имя зр
Select *
FROM sys.procedures where [type] = 'P'
AND is_ms_shipped = 0
AND [name] not like 'sp[_]%diagram%'
Вы можете попробовать этот запрос, чтобы получить хранимые процедуры и функции:
SELECT name, type
FROM dbo.sysobjects
WHERE type IN (
'P', -- stored procedures
'FN', -- scalar functions
'IF', -- inline table-valued functions
'TF' -- table-valued functions
)
ORDER BY type, name
Чтобы получить список хранимых процедур для конкретной базы данных MySQL:
SHOW PROCEDURE STATUS WHERE db = 'databaseName';
Это будет укажите только имена хранимых процедур.
select specific_name
from information_schema.routines
where routine_type = 'PROCEDURE';
Вы можете использовать один из перечисленных ниже запросов, чтобы найти список хранимых процедур в одной базе данных:
QUERY1:
SELECT
*
FROM sys.procedures;
Query2:
SELECT
*
FROM information_schema.routines
WHERE ROUTINE_TYPE = 'PROCEDURE'
Если вы хочу найти список все СП во всех Базах данных вы можете используйте приведенный ниже запрос:
CREATE TABLE #ListOfSPs
(
DBName varchar(100),
[OBJECT_ID] INT,
SPName varchar(100)
)
EXEC sp_msforeachdb 'USE [?]; INSERT INTO #ListOfSPs Select ''?'', Object_Id, Name FROM sys.procedures'
SELECT
*
FROM #ListOfSPs
Я улучшил превосходное сообщение LostCajun выше, чтобы исключить системные хранимые процедуры. Я также удалил «Экстракт». из кода, потому что я не мог понять, для чего это, и это дало мне ошибки. Операция «выборка следующего» внутри цикла также требовала «в».
use <<databasename>>
go
declare @aQuery nvarchar(1024);
declare @spName nvarchar(64);
declare allSP cursor for
select p.name
from sys.procedures p
where p.type_desc = 'SQL_STORED_PROCEDURE'
and LEFT(p.name,3) NOT IN ('sp_','xp_','ms_')
order by p.name;
open allSP;
fetch next from allSP into @spName;
while (@@FETCH_STATUS = 0)
begin
set @aQuery = 'sp_helptext [' + @spName + ']';
exec sp_executesql @aQuery;
fetch next from allSP into @spName;
end;
close allSP;
deallocate allSP;
Эта утилита поможет локализовать всю хранимую процедуру из базы данных sql.
Выбрать Все Хранимые процедуры и просмотры
select name,type,type_desc
from sys.objects
where type in ('V','P')
order by name,type
Просто имена:
SELECT SPECIFIC_NAME
FROM YOUR_DB_NAME.information_schema.routines
WHERE routine_type = 'PROCEDURE'
Если вы создаете диаграммы баз данных, вы можете получить кучу проков, начинающихся с «dt_» в вашей базе данных, которые вы также можете отфильтровать. – 2013-06-12 00:16:13
+1 для информационной схемы. стоит прочитать: http://msdn.microsoft.com/en-us/library/ms186778.aspx – Shiham 2014-09-16 08:34:18
Это должно быть «До тех пор, пока вы не находитесь в [master] или [msdb] базах данных ...» – 2015-01-08 15:18:13