SELECT [schema] = OBJECT_SCHEMA_NAME([object_id]),
name
FROM sys.procedures;
oder
SELECT [schema] = SCHEMA_NAME([schema_id]),
name
FROM sys.procedures;
Für eine bestimmte Datenbank können Sie einfach zuerst den Kontext zu dieser Datenbank ändern oder Marcs Abfrage leicht ändern (meine Abfragen sind in diesem Fall nicht gut, weil sie auf Funktionen angewiesen sind, die kontextsensitiv sind):
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;
Wenn Sie dies für alle Datenbanken tun möchten:
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;
Die Collate-Klauseln sind notwendig, falls Sie Datenbanken mit unterschiedlichen Sortierungen haben.