List all stored procedures with schema name

2019-03-15 12:52发布

Can anyone advise on a way to list all stored procedures along with their schema names in a database? Thanks!

6条回答
做自己的国王
2楼-- · 2019-03-15 13:21

Try this:

SELECT 
    SchemaName = s.name,
    ProcedureName = pr.name 
FROM 
    sys.procedures pr
INNER JOIN 
    sys.schemas s ON pr.schema_id = s.schema_id

This should list all stored procedures and their schema name as a result set.

Both views - sys.procedures and sys.schemas - have quite a few more attributes - check them out, if you need them, include them in your query.

查看更多
贪生不怕死
3楼-- · 2019-03-15 13:26
SELECT name,crdate  FROM dbo.sysobjects WHERE (type = 'P')  order by name 

SELECT [schema] = OBJECT_SCHEMA_NAME([object_id]),name FROM sys.procedures;

select OBJECT_SCHEMA_NAME([object_id]) as 'SchemaName',name as 'SP Name ' ,

create_date,modify_date FROM sys.procedures order by OBJECT_SCHEMA_NAME([object_id]), name 
查看更多
乱世女痞
4楼-- · 2019-03-15 13:29
SELECT [schema] = OBJECT_SCHEMA_NAME([object_id]),
  name
FROM sys.procedures;

or

SELECT [schema] = SCHEMA_NAME([schema_id]),
  name
FROM sys.procedures;

For a specific database, you can just change the context to that database first, or change Marc's query slightly (my queries are no good in this case because they rely on functions that are context-sensitive):

SELECT 
    SchemaName = s.name,
    ProcedureName = pr.name 
FROM 
    databasename.sys.procedures pr
INNER JOIN 
    databasename.sys.schemas s ON pr.schema_id = s.schema_id;

If you want to do this for all databases:

DECLARE @sql NVARCHAR(MAX) = N'';

SELECT @sql += N'
  UNION ALL SELECT db = N''' + name + ''', 
    s.name COLLATE Latin1_General_CI_AI,
    o.name COLLATE Latin1_General_CI_AI
  FROM ' + QUOTENAME(name) + '.sys.procedures AS o
  INNER JOIN ' + QUOTENAME(name) + '.sys.schemas AS s
  ON o.[schema_id] = s.[schema_id]'
FROM sys.databases
-- WHERE ... -- probably don't need system databases at least

SELECT @sql = STUFF(@sql, 1, 18, '') 
  -- you may have to adjust  ^^ 18 due to copy/paste, cr/lf, tabs etc 
  + ' ORDER BY by db, s.name, o.name';

EXEC sp_executesql @sql;

The collate clauses are necessary in case you have databases with different collations.

查看更多
干净又极端
5楼-- · 2019-03-15 13:31

this may help You..

SELECT * FROM sys.procedures;

查看更多
一夜七次
6楼-- · 2019-03-15 13:36

You can use Script Generator to get them. In the left pan right click on the database for which you want to get Stored Procedures, Tasks->Generate Scripts Click Next and choose Select Specific Database Objects and select Stored Procedures and click on next, there you can customize as you need and generate the scripts.

查看更多
手持菜刀,她持情操
7楼-- · 2019-03-15 13:36

Try this:

execute [sys].[sp_stored_procedures]

Or try this and also get all parameters:

execute [sys].[sp_sproc_columns]

Ok...you'll have to loop through all DB catalog names with this, but...

查看更多
登录 后发表回答