SELECT [schema] = OBJECT_SCHEMA_NAME([object_id]), name FROM sys.procedures;
プレ>または
SELECT [schema] = SCHEMA_NAME([schema_id]), name FROM sys.procedures;
プレ>特定のデータベースについては、最初にコンテキストをそのデータベースに変更するか、Marc のクエリを少し変更するだけです (この場合、私のクエリはコンテキスト依存の関数に依存しているため、適切ではありません):
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;
プレ>照合順序が異なるデータベースがある場合は、collate 句が必要です。