任何人都可以提供建议的方式列出与数据库中的模式名称一起的所有存储过程? 谢谢!
Answer 1:
SELECT [schema] = OBJECT_SCHEMA_NAME([object_id]),
name
FROM sys.procedures;
要么
SELECT [schema] = SCHEMA_NAME([schema_id]),
name
FROM sys.procedures;
对于特定的数据库,你可以改变的背景下,以该数据库第一,或者稍微改变马克的查询(我的查询没有在这种情况下很好的,因为它们所依赖的是上下文相关的功能):
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;
如果您想对所有数据库这样做:
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;
如果你有不同的排序规则的数据库的整理的条款是必要的。
Answer 2:
试试这个:
SELECT
SchemaName = s.name,
ProcedureName = pr.name
FROM
sys.procedures pr
INNER JOIN
sys.schemas s ON pr.schema_id = s.schema_id
这应该列出所有的存储过程和他们的架构名称作为结果集。
这两种观点- sys.procedures
和sys.schemas
-有不少多个属性-检查出来,如果你需要他们,包括他们在您的查询。
Answer 3:
这可能会帮助你..
SELECT * FROM sys.procedures;
Answer 4:
您可以使用脚本生成器来获得它们。 在左盘右单击您想获得存储过程的数据库上,任务 - >生成脚本点击下一步,选择选择特定的数据库对象,并选择存储过程,并单击下一步,那里你可以定制你需要和生成脚本。
Answer 5:
试试这个:
execute [sys].[sp_stored_procedures]
或者试试这一点,也得到所有的参数:
execute [sys].[sp_sproc_columns]
好吧...你会通过这一切DB目录名称必须循环,但是...
Answer 6:
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
文章来源: List all stored procedures with schema name