ストアド プロシージャの定義を表示する

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

ストアド プロシージャの定義を表示する

この記事では、オブジェクト エクスプローラーでプロシージャの定義を表示する方法について説明します。さらに、クエリ エディターでのシステム プロシージャ、システム関数、およびオブジェクト カタログ ビューを使用した表示方法について説明します。

セキュリティ

アクセス許可

システム ストアド プロシージャ: sp_helptext
ロール public のメンバーシップが必要です。 システム オブジェクトの定義は、公開されます。 ユーザー オブジェクトの定義は、オブジェクトの所有者、または ALTERCONTROLTAKE OWNERSHIPVIEW DEFINITION のいずれかの権限を許可された人が表示できます。

システム関数: OBJECT_DEFINITION
システム オブジェクトの定義は、公開されます。 ユーザー オブジェクトの定義は、オブジェクトの所有者、または ALTERCONTROLTAKE OWNERSHIPVIEW DEFINITION のいずれかの権限を許可された人が表示できます。 これらの権限は db_ownerdb_ddladmin、および db_securityadmin 固定データベース ロールのメンバーが暗黙的に保有します。

オブジェクト カタログ ビュー: sys.sql_modules
カタログ ビューでのメタデータの表示が、ユーザーが所有しているかそのユーザーが権限を許可されている、セキュリティ保護可能なメタデータに制限されます。 詳細については、「 Metadata Visibility Configuration」を参照してください。

Note

システム ストアド プロシージャ sp_helptext は、Azure Synapse Analytics ではサポートされていません。 代わりに、sys.sql_modules オブジェクト カタログ ビューを使用します。 サンプルについては、この記事で後述します。

ストアド プロシージャの定義の表示方法

次のいずれかを使用します。

SQL Server Management Studio を使用する

オブジェクト エクスプローラーでプロシージャの定義を表示するには

  1. オブジェクト エクスプローラーで、データベース エンジンのインスタンスに接続し、そのインスタンスを展開します。

  2. [データベース]を展開し、プロシージャが属するデータベースを展開し、 [プログラミング]を展開します。

  3. [ストアド プロシージャ]を展開します。プロシージャを右クリックし、[ストアド プロシージャをスクリプト化]を選択し、[CREATE][ALTER][DROP および CREATE]のいずれかを選択します。

  4. 新しいクエリ エディター ウィンドウを選択します。 プロシージャの定義が表示されます。

Transact-SQL の使用

クエリ エディターでプロシージャの定義を表示するには

システム ストアド プロシージャ: sp_helptext

  1. オブジェクト エクスプローラーで、データベース エンジンのインスタンスに接続します。

  2. ツール バーで、 [新しいクエリ] を選択します。

  3. クエリ ウィンドウで、sp_helptext システム ストアド プロシージャを使用した次のステートメントを入力します。 データベース名とストアド プロシージャ名を変更し、目的のデータベースとストアド プロシージャを参照するようにします。

    USE AdventureWorks2022;  
    GO  
    EXEC sp_helptext N'AdventureWorks2022.dbo.uspLogError';  
    

システム関数: OBJECT_DEFINITION

  1. オブジェクト エクスプローラーで、データベース エンジンのインスタンスに接続します。

  2. ツール バーで、 [新しいクエリ] を選択します。

  3. クエリ ウィンドウで、OBJECT_DEFINITION システム関数を使用した次のステートメントを入力します。 データベース名とストアド プロシージャ名を変更し、目的のデータベースとストアド プロシージャを参照するようにします。

    USE AdventureWorks2022;  
    GO  
    SELECT OBJECT_DEFINITION (OBJECT_ID(N'AdventureWorks2022.dbo.uspLogError'));  
    

オブジェクト カタログ ビュー: sys.sql_modules

  1. オブジェクト エクスプローラーで、データベース エンジンのインスタンスに接続します。

  2. ツール バーで、 [新しいクエリ] を選択します。

  3. クエリ ウィンドウで、sys.sql_modules カタログ ビューを使用した次のステートメントを入力します。 データベース名とストアド プロシージャ名を変更し、目的のデータベースとストアド プロシージャを参照するようにします。

    USE AdventureWorks2022;  
    GO  
    SELECT [definition]
    FROM sys.sql_modules  
    WHERE object_id = (OBJECT_ID(N'dbo.uspLogError'));  
    

関連項目