次の方法で共有


GRANT (Transact-SQL)

セキュリティ保護可能なリソースに対する権限をプリンシパルに許可します。一般的な考え方としては、GRANT <権限> ON <オブジェクト> TO <ユーザー、ログイン、またはグループ> という形になります。権限の概要については、「権限 (データベース エンジン)」を参照してください。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

Simplified syntax for GRANT
GRANT { ALL [ PRIVILEGES ] }
      | permission [ ( column [ ,...n ] ) ] [ ,...n ]
      [ ON [ class :: ] securable ] TO principal [ ,...n ] 
      [ WITH GRANT OPTION ] [ AS principal ]

引数

  • ALL
    このオプションは旧バージョンとの互換性のためだけに保持されており、使用は推奨されません。実際にはすべての権限が許可されるわけではありません。ALL を指定すると、次の権限が許可されます。

    • セキュリティ保護可能なリソースがデータベースの場合、BACKUP DATABASE、BACKUP LOG、CREATE DATABASE、CREATE DEFAULT、CREATE FUNCTION、CREATE PROCEDURE、CREATE RULE、CREATE TABLE、CREATE VIEW。

    • セキュリティ保護可能なリソースがスカラー関数の場合、EXECUTE および REFERENCES。

    • セキュリティ保護可能なリソースがテーブル値関数の場合、DELETE、INSERT、REFERENCES、SELECT、UPDATE。

    • セキュリティ保護可能なリソースがストアド プロシージャの場合、EXECUTE。

    • セキュリティ保護可能なリソースがテーブルの場合、DELETE、INSERT、REFERENCES、SELECT、UPDATE。

    • セキュリティ保護可能なリソースがビューの場合、DELETE、INSERT、REFERENCES、SELECT、UPDATE。

  • PRIVILEGES
    ISO 準拠のために用意されています。ALL の動作は変更されません。

  • permission
    権限の名前を指定します。権限とセキュリティ保護可能なリソースの有効な組み合わせについては、後のトピックを参照してください。

  • column
    権限を許可するテーブルの列の名前を指定します。かっこ "()" で囲む必要があります。

  • class
    権限を許可するセキュリティ保護可能なリソースのクラスを指定します。スコープ修飾子 "::" が必要です。

  • securable
    権限を許可するセキュリティ保護可能なリソースを指定します。

  • TO principal
    プリンシパルの名前を指定します。セキュリティ保護可能なリソースに対する権限を許可できるプリンシパルは、そのリソースによって異なります。有効な組み合わせについては、後のトピックを参照してください。

  • GRANT OPTION
    権限を許可されたプリンシパルが、この権限を他のプリンシパルにも許可できることを示します。

  • AS principal
    このクエリを実行するプリンシパルが権限を許可する権利を取得した、元のプリンシパルを指定します。

説明

GRANT ステートメントの完全な構文は複雑です。前の構文図は、構造をわかりやすくするために簡略化されています。セキュリティ保護可能なリソースに対する権限を許可するための完全な構文については、後のトピックを参照してください。

許可された権限を取り消す場合は REVOKE ステートメントを使用します。また、GRANT ステートメントによってプリンシパルに特定の権限が許可されないようにするには DENY ステートメントを使用します。

権限を許可すると、指定したセキュリティ保護可能なリソースに対する権限の DENY または REVOKE は削除されます。対象のセキュリティ保護可能なリソースの上位スコープで同じ権限が拒否されている場合は、その DENY ステートメントが優先されますが、上位スコープで許可されている権限を取り消そうとしても、その REVOKE ステートメントは優先されません。

データベース レベルの権限は、指定されたデータベースのスコープ内で許可されます。ユーザーが別のデータベースのオブジェクトに対する権限を必要とする場合、そのデータベースにユーザー アカウントを作成するか、または現在のデータベースへのアクセス権と同様に、そのデータベースへのアクセス権もユーザー アカウントに与えます。

注記注意

テーブル レベルの DENY ステートメントは列レベルの GRANT ステートメントよりも優先されません。この動作は権限の階層内で一貫していませんが、旧バージョンとの互換性のために保持されています。将来のリリースでは削除される予定です。

システム ストアド プロシージャ sp_helprotect では、データベース レベルのセキュリティ保護可能なリソースに対する権限がレポートされます。

WITH GRANT OPTION

GRANT … WITH GRANT OPTION では、権限を受け取るセキュリティ プリンシパルが、指定した権限を他のセキュリティ アカウントに与えることができるよう指定します。権限を受け取るプリンシパルがロールまたは Windows グループである場合は、そのグループまたはロールのメンバーでないユーザーに追加のオブジェクト権限を付与する必要があるときに AS 句を使用してください。GRANT ステートメントを実行できるのは、グループやロールではなくユーザーのみなので、グループやロールの特定のメンバーは、権限を付与する場合に AS 句を使用して明示的にロールまたはグループのメンバーシップを呼び出す必要があります。次の例は、ロールまたは Windows グループに権限を付与する場合の WITH GRANT OPTION の使用方法を示しています。

-- Execute the following as a database owner
GRANT EXECUTE ON TestProc TO TesterRole WITH GRANT OPTION
EXEC sp_addrolemember TesterRole, User1;
-- Execute the following as User1
-- The following fails because User1 does not have the permission as the User1
GRANT EXECUTE ON TestMe TO User2;
-- The following succeeds because User1 invokes the TesterRole membership
GRANT EXECUTE ON TestMe TO User2 AS TesterRole;

SQL Server 権限の図

データベース エンジンのすべての権限に関するポスター サイズの図を pdf 形式で提供しています。詳細については、https://go.microsoft.com/fwlink/?LinkId=229142 を参照してください。

権限

権限の許可者 (または AS オプションで指定されたプリンシパル) は、GRANT OPTION によって与えられた権限を保持しているか、権限が暗黙的に与えられる上位の権限を保持している必要があります。AS オプションを使用する場合は、追加の要件を満たす必要があります。詳細については、セキュリティ保護可能なリソース別のトピックを参照してください。

オブジェクトの所有者は、所有するオブジェクトの権限を許可できます。セキュリティ保護可能なリソースに対して CONTROL 権限があるプリンシパルは、そのリソースの権限を許可できます。

sysadmin 固定サーバー ロールのメンバーなど、CONTROL SERVER 権限が許可されているユーザーは、サーバー内のセキュリティ保護可能なリソースに対する権限を許可できます。db_owner 固定データベース ロールのメンバーなど、データベースに対する CONTROL 権限が許可されているユーザーは、データベース内のセキュリティ保護可能なリソースに対する権限を許可できます。スキーマに対する CONTROL 権限が許可されているユーザーは、スキーマ内のオブジェクトに対する権限を許可できます。

使用例

次の表は、セキュリティ保護可能なリソースと、その構文について説明しているトピックの一覧です。

アプリケーション ロール

GRANT (データベース プリンシパルの権限の許可) (Transact-SQL)

アセンブリ

GRANT (アセンブリの権限の許可) (Transact-SQL)

非対称キー

GRANT (非対称キーの権限の許可) (Transact-SQL)

証明書

GRANT (証明書の権限の許可) (Transact-SQL)

コントラクト

GRANT (Service Broker の権限の許可) (Transact-SQL)

データベース

GRANT (データベースの権限の許可) (Transact-SQL)

エンドポイント

GRANT (エンドポイントの権限の許可) (Transact-SQL)

フルテキスト カタログ

GRANT (フルテキストの権限の許可) (Transact-SQL)

フルテキスト ストップ リスト

GRANT (フルテキストの権限の許可) (Transact-SQL)

関数

GRANT (オブジェクトの権限の許可) (Transact-SQL)

ログイン

GRANT (サーバー プリンシパルの権限の許可) (Transact-SQL)

メッセージ型

GRANT (Service Broker の権限の許可) (Transact-SQL)

オブジェクト

GRANT (オブジェクトの権限の許可) (Transact-SQL)

キュー

GRANT (オブジェクトの権限の許可) (Transact-SQL)

リモート サービス バインド

GRANT (Service Broker の権限の許可) (Transact-SQL)

ロール

GRANT (データベース プリンシパルの権限の許可) (Transact-SQL)

ルート

GRANT (Service Broker の権限の許可) (Transact-SQL)

スキーマ

GRANT (スキーマ権限の許可) (Transact-SQL)

サーバー

GRANT (サーバーの権限の許可) (Transact-SQL)

サービス

GRANT (Service Broker の権限の許可) (Transact-SQL)

ストアド プロシージャ

GRANT (オブジェクトの権限の許可) (Transact-SQL)

対称キー

GRANT (対称キーの権限の許可) (Transact-SQL)

シノニム

GRANT (オブジェクトの権限の許可) (Transact-SQL)

システム オブジェクト

GRANT (システム オブジェクトの権限の許可) (Transact-SQL)

テーブル

GRANT (オブジェクトの権限の許可) (Transact-SQL)

GRANT (型の権限の許可) (Transact-SQL)

ユーザー

GRANT (データベース プリンシパルの権限の許可) (Transact-SQL)

ビュー

GRANT (オブジェクトの権限の許可) (Transact-SQL)

XML スキーマ コレクション

GRANT (XML スキーマ コレクションの権限の許可) (Transact-SQL)