ストアド プロシージャに対する権限の許可

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

この記事では、SQL Server で SQL Server Management Studio または Transact-SQL を使用して、ストアド プロシージャへのアクセス許可を付与する方法について説明します。 権限は、データベース内の既存のユーザー、データベース ロール、またはアプリケーション ロールに許可することができます。

制限事項と制約事項

  • SQL Server Management Studio を使用して、システム プロシージャやシステム関数に対する権限を許可することはできません。 代わりに、 GRANT (オブジェクト権限の許可) を使用してください。

Permissions

権限の許可者 (または AS オプションで指定されたプリンシパル) は、GRANT OPTION によって与えられた権限を保持しているか、権限が暗黙的に与えられる上位の権限を保持している必要があります。 プロシージャが属しているスキーマに対する ALTER 権限、またはプロシージャに対する CONTROL 権限が必要です。 詳細については、「GRANT (オブジェクトの権限の許可) (Transact-SQL)」を参照してください。

SQL Server Management Studio の使用 [SQL Server]

ストアド プロシージャに対して権限を許可するには

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

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

  3. [ストアド プロシージャ] を展開し、アクセス許可を付与するプロシージャを右クリックして、 [プロパティ] を選択します。

  4. [ストアド プロシージャのプロパティ] で、 [権限] ページを選択します。

  5. ユーザー、データベース ロール、またはアプリケーション ロールにアクセス許可を付与するには、 [検索] を選択します。

  6. [ユーザーまたはロールの選択] で、 [オブジェクトの種類] を選択して目的のユーザーやロールを追加または削除します。

  7. [参照] を選択してユーザーまたはロールの一覧を表示します。 権限を許可するユーザーまたはロールを選択します。

  8. [明示的な権限] グリッドで、指定したユーザーまたはロールに許可する権限を選択します。 権限の説明については、「権限 (データベース エンジン)」を参照してください。

[許可] を選択すると、指定した権限が与えられます。 [許可の有無] を選択すると、指定した権限をさらに他のプリンシパルにも許可できるようになります。

Transact-SQL の使用

ストアド プロシージャに対して権限を許可するには

  1. データベース エンジンに接続します。

  2. 標準バーから、 [新しいクエリ] を選択します。

  3. 次の例をコピーしてクエリ ウィンドウに貼り付け、 [実行] を選択します。 この例では、ストアド プロシージャ EXECUTE に対する HumanResources.uspUpdateEmployeeHireInfo 権限を、アプリケーション ロール Recruiting11に対して許可します。

USE AdventureWorks2022;   
GRANT EXECUTE ON OBJECT::HumanResources.uspUpdateEmployeeHireInfo  
    TO Recruiting11;  
GO  

スキーマ内のすべてのストアド プロシージャへのアクセス許可を付与するには

  1. データベース エンジンに接続します。

  2. 標準バーから、 [新しいクエリ] を選択します。

  3. 次の例をコピーしてクエリ ウィンドウに貼り付け、 [実行] を選択します。 この例では、HumanResources スキーマに現在または将来存在するすべてのストアド プロシージャへの EXECUTE アクセス許可を、Recruiting11 という名前のアプリケーション ロールに付与します。

USE AdventureWorks2022;   
GRANT EXECUTE ON SCHEMA::HumanResources
    TO Recruiting11;  
GO  

次の手順