web-dev-qa-db-ja.com

すべてのストアドプロシージャをスキーマ名とともに一覧表示する

誰でもデータベース内のすべてのストアドプロシージャとそのスキーマ名をリストする方法についてアドバイスできますか?ありがとう!

11
daniness
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;

照合順序が異なるデータベースがある場合は、照合句が必要です。

29
Aaron Bertrand

これを試して:

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-さらに多くの属性があります-それらをチェックアウトし、必要な場合はクエリに含めてください。

12
marc_s

これはあなたを助けるかもしれません..

SELECT * FROM sys.procedures;

2
SonalPM
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 
0
Krushna

スクリプトジェネレーターを使用して取得できます。左ペインで、ストアドプロシージャを取得するデータベースを右クリックし、[タスク]-> [スクリプトの生成] [次へ]をクリックして[特定のデータベースオブジェクトの選択]を選択し、[ストアドプロシージャ]を選択して[次へ]をクリックします。スクリプト。

0
Sravan U

これを試して:

execute [sys].[sp_stored_procedures]

または、これを試して、すべてのパラメーターも取得します。

execute [sys].[sp_sproc_columns]

OK ...これですべてのDBカタログ名をループする必要がありますが、...

0
Robert Achmann