ストアド プロシージャに対する権限の許可
適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
この記事では、SQL Server で SQL Server Management Studio または Transact-SQL を使用して、ストアド プロシージャへのアクセス許可を付与する方法について説明します。 権限は、データベース内の既存のユーザー、データベース ロール、またはアプリケーション ロールに許可することができます。
制限事項と制約事項
- SQL Server Management Studio を使用して、システム プロシージャやシステム関数に対するアクセス許可を付与することはできません。 代わりに GRANT オブジェクトのアクセス許可 (Transact-SQL) を使用します。
アクセス許可
付与者 (または AS
オプションで指定されたプリンシパル) は、GRANT OPTION
で指定されたアクセス許可自体を保持しているか、アクセス許可が暗黙的に付与される上位のアクセス許可を保持している必要があります。 プロシージャが属しているスキーマに対する ALTER
権限、またはプロシージャに対する CONTROL
権限が必要です。 詳細については、「GRANT オブジェクトのアクセス許可」を参照してください。
SQL Server Management Studio を使用します。
ストアド プロシージャに対して権限を許可するには
オブジェクト エクスプローラーで、データベース エンジンのインスタンスに接続し、そのインスタンスを展開します。
[データベース]を展開し、プロシージャが属するデータベースを展開し、 [プログラミング]を展開します。
[ストアド プロシージャ] を展開し、アクセス許可を付与するプロシージャを右クリックして、[プロパティ] を選択します。
[ストアド プロシージャのプロパティ]で、 [権限] ページを選択します。
ユーザー、データベース ロール、またはアプリケーション ロールにアクセス許可を付与するには、[検索] を選択します。
[ユーザーまたはロールの選択] で、[オブジェクトの種類] を選択して目的のユーザーやロールを追加または削除します。
[参照] を選択してユーザーまたはロールの一覧を表示します。 権限を許可するユーザーまたはロールを選択します。
[明示的な権限] グリッドで、指定したユーザーまたはロールに許可する権限を選択します。 権限の説明については、「権限 (データベース エンジン)」を参照してください。
[許可] を選択すると、指定した権限が与えられます。 [許可の有無] を選択すると、指定した権限をさらに他のプリンシパルにも許可できるようになります。
Transact-SQL の使用
ストアド プロシージャに対して権限を許可するには
データベース エンジンに接続します。
標準バーから、 [新しいクエリ] を選択します。
次の例をコピーしてクエリ ウィンドウに貼り付け、 [実行] を選択します。 この例では、ストアド プロシージャ
EXECUTE
に対するHumanResources.uspUpdateEmployeeHireInfo
権限を、アプリケーション ロールRecruiting11
に対して許可します。
USE AdventureWorks2022;
GRANT EXECUTE ON OBJECT::HumanResources.uspUpdateEmployeeHireInfo
TO Recruiting11;
GO
スキーマ内のすべてのストアド プロシージャへのアクセス許可を付与するには
データベース エンジンに接続します。
標準バーから、 [新しいクエリ] を選択します。
次の例をコピーしてクエリ ウィンドウに貼り付け、 [実行] を選択します。 この例では、
HumanResources
スキーマに現在または将来存在するすべてのストアド プロシージャへのEXECUTE
アクセス許可を、Recruiting11
という名前のアプリケーション ロールに付与します。
USE AdventureWorks2022;
GRANT EXECUTE ON SCHEMA::HumanResources
TO Recruiting11;
GO