SELECT [schema] = OBJECT_SCHEMA_NAME([object_id]),
name
FROM sys.procedures;
atau
SELECT [schema] = SCHEMA_NAME([schema_id]),
name
FROM sys.procedures;
Untuk database tertentu, Anda bisa mengubah konteks ke database itu terlebih dahulu, atau mengubah kueri Marc sedikit (kueri saya tidak bagus dalam kasus ini karena bergantung pada fungsi yang peka konteks):
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;
Jika Anda ingin melakukan ini untuk semua database:
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;
Klausa susun diperlukan jika Anda memiliki database dengan susunan yang berbeda.