GRANT (Transact-SQL)GRANT (Transact-SQL)

適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions) はいAzure SQL データベースAzure SQL DatabaseYesAzure SQL データベースAzure SQL Database はいAzure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance はいAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics はいParallel Data WarehouseParallel Data WarehouseyesParallel Data WarehouseParallel Data Warehouse適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions) はいAzure SQL データベースAzure SQL DatabaseYesAzure SQL データベースAzure SQL Database はいAzure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance はいAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics はいParallel Data WarehouseParallel Data WarehouseyesParallel Data WarehouseParallel Data Warehouse

セキュリティ保護可能なリソースに対する権限をプリンシパルに許可します。Grants permissions on a securable to a principal. 一般的な概念は、<some object> に対する <some permission> を <some user, login, or group> に付与することです。The general concept is to GRANT <some permission> ON <some object> TO <some user, login, or group>. 権限の概要については、「権限 (データベース エンジン)」を参照してください。For a general discussion of permissions, see Permissions (Database Engine).

記事リンク アイコン Transact-SQL 構文表記規則Article link icon Transact-SQL Syntax Conventions

構文Syntax

-- Syntax for SQL Server and Azure SQL Database  
  
-- Simplified syntax for GRANT  
GRANT { ALL [ PRIVILEGES ] }  
      | permission [ ( column [ ,...n ] ) ] [ ,...n ]  
      [ ON [ class :: ] securable ] TO principal [ ,...n ]   
      [ WITH GRANT OPTION ] [ AS principal ]  
-- Syntax for Azure Synapse Analytics and Parallel Data Warehouse  
  
GRANT
    <permission> [ ,...n ]  
    [ ON [ <class_type> :: ] securable ]
    TO principal [ ,...n ]  
    [ WITH GRANT OPTION ]  
[;]  
  
<permission> ::=  
{ see the tables below }  
  
<class_type> ::=  
{  
      LOGIN  
    | DATABASE  
    | OBJECT  
    | ROLE  
    | SCHEMA  
    | USER  
}  

注意

SQL Server 2014 以前の Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。To view Transact-SQL syntax for SQL Server 2014 and earlier, see Previous versions documentation.

引数Arguments

ALLALL
このオプションは旧バージョンとの互換性のためだけに保持されており、非推奨とされます。This option is deprecated and maintained only for backward compatibility. 実際にはすべての権限が許可されるわけではありません。It does not grant all possible permissions. ALL を指定すると、次のアクセス許可が許可されます。Granting ALL is equivalent to granting the following permissions:

  • セキュリティ保護可能なリソースがデータベースの場合、ALL は BACKUP DATABASE、BACKUP LOG、CREATE DATABASE、CREATE DEFAULT、CREATE FUNCTION、CREATE PROCEDURE、CREATE RULE、CREATE TABLE、および CREATE VIEW を意味します。If the securable is a database, ALL means BACKUP DATABASE, BACKUP LOG, CREATE DATABASE, CREATE DEFAULT, CREATE FUNCTION, CREATE PROCEDURE, CREATE RULE, CREATE TABLE, and CREATE VIEW.

  • セキュリティ保護可能なリソースがスカラー関数の場合、EXECUTE および REFERENCES。If the securable is a scalar function, ALL means EXECUTE and REFERENCES.

  • セキュリティ保護可能なリソースがテーブル値関数の場合、DELETE、INSERT、REFERENCES、SELECT、UPDATE。If the securable is a table-valued function, ALL means DELETE, INSERT, REFERENCES, SELECT, and UPDATE.

  • セキュリティ保護可能なリソースがストアド プロシージャの場合、EXECUTE。If the securable is a stored procedure, ALL means EXECUTE.

  • セキュリティ保護可能なリソースがテーブルの場合、ALL は DELETE、INSERT、REFERENCES、SELECT、および UPDATE を意味します。If the securable is a table, ALL means DELETE, INSERT, REFERENCES, SELECT, and UPDATE.

  • セキュリティ保護可能なリソースがビューの場合、ALL は DELETE、INSERT、REFERENCES、SELECT、および UPDATE を意味します。If the securable is a view, ALL means DELETE, INSERT, REFERENCES, SELECT, and UPDATE.

PRIVILEGESPRIVILEGES
ISO 準拠のために用意されています。Included for ISO compliance. ALL の動作は変更されません。Does not change the behavior of ALL.

permissionpermission
権限の名前を指定します。Is the name of a permission. アクセス許可とセキュリティ保護可能なリソースの有効な組み合わせについては、後のトピックを参照してください。The valid mappings of permissions to securables are described in the subtopics listed below.

columncolumn
権限を許可するテーブルの列の名前を指定します。Specifies the name of a column in a table on which permissions are being granted. かっこ () で囲む必要があります。The parentheses () are required.

classclass
権限を許可するセキュリティ保護可能なリソースのクラスを指定します。Specifies the class of the securable on which the permission is being granted. スコープ修飾子 :: が必要です。The scope qualifier :: is required.

securablesecurable
権限を許可するセキュリティ保護可能なリソースを指定します。Specifies the securable on which the permission is being granted.

TO principalTO principal
プリンシパルの名前です。Is the name of a principal. セキュリティ保護可能なリソースに対する権限を許可できるプリンシパルは、そのリソースによって異なります。The principals to which permissions on a securable can be granted vary, depending on the securable. 有効な組み合わせについては、後のトピックを参照してください。See the subtopics listed below for valid combinations.

GRANT OPTIONGRANT OPTION
権限が許可された被付与者が、この権限を他のプリンシパルにも許可できることを示します。Indicates that the grantee will also be given the ability to grant the specified permission to other principals.

AS principalAS principal
AS 句は、権限の許可者として記録されるプリンシパルは、ステートメントを実行しているユーザー以外のプリンシパルでなければならないことを示すために使います。Use the AS principal clause to indicate that the principal recorded as the grantor of the permission should be a principal other than the person executing the statement. たとえば、ユーザー Mary の principal_id は 12、ユーザー Raul の principal_id は 15 であるものとします。For example, presume that user Mary is principal_id 12 and user Raul is principal 15. Mary が GRANT SELECT ON OBJECT::X TO Steven WITH GRANT OPTION AS Raul; を実行します。ステートメントは実際にはユーザー 13 (Mary) によって実行されましたが、sys.database_permissions テーブルでは、grantor_prinicpal_id は 15 (Raul) であることが示されます。Mary executes GRANT SELECT ON OBJECT::X TO Steven WITH GRANT OPTION AS Raul; Now the sys.database_permissions table will indicate that the grantor_prinicpal_id was 15 (Raul) even though the statement was actually executed by user 13 (Mary).

一般に、AS 句の使用は、権限チェーンを明示的に定義する必要がある場合を除き、推奨されません。Using the AS clause is typically not recommended unless you need to explicitly define the permission chain. 詳しくは、「権限 (データベース エンジン)」の「権限チェック アルゴリズムの概要」セクションをご覧ください。For more information, see the Summary of the Permission Check Algorithm section of Permissions (Database Engine).

このステートメントで AS を使っても、別のユーザーを偽装できることは意味しません。The use of AS in this statement does not imply the ability to impersonate another user.

解説Remarks

GRANT ステートメントの完全な構文は複雑です。The full syntax of the GRANT statement is complex. 前の構文ダイアグラムは、構造をわかりやすくするために簡略化されています。The syntax diagram above was simplified to draw attention to its structure. セキュリティ保護可能なリソースに対するアクセス許可を許可するための完全な構文については、後の記事を参照してください。Complete syntax for granting permissions on specific securables is described in the articles listed below.

許可された権限を取り消す場合は REVOKE ステートメントを使用します。また、GRANT によってプリンシパルに特定の権限が許可されないようにするには DENY ステートメントを使用します。The REVOKE statement can be used to remove granted permissions, and the DENY statement can be used to prevent a principal from gaining a specific permission through a GRANT.

権限を許可すると、指定したセキュリティ保護可能なリソースに対する権限の DENY または REVOKE は削除されます。Granting a permission removes DENY or REVOKE of that permission on the specified securable. 対象のセキュリティ保護可能なリソースの上位スコープで同じ権限が拒否されている場合は、その DENY ステートメントが優先されますが、If the same permission is denied at a higher scope that contains the securable, the DENY takes precedence. 上位スコープで許可されている権限を取り消そうとしても、その REVOKE ステートメントは優先されません。But revoking the granted permission at a higher scope does not take precedence.

データベース レベルの権限は、指定されたデータベースのスコープ内で許可されます。Database-level permissions are granted within the scope of the specified database. ユーザーが別のデータベースのオブジェクトに対する権限を必要とする場合、そのデータベースにユーザー アカウントを作成するか、または現在のデータベースへのアクセス権と同様に、そのデータベースへのアクセス権もユーザー アカウントに与えます。If a user needs permissions to objects in another database, create the user account in the other database, or grant the user account access to the other database, as well as the current database.

注意事項

テーブル レベルの DENY は列レベルの GRANT ステートメントよりも優先されません。A table-level DENY does not take precedence over a column-level GRANT. この動作は権限の階層内で一貫していませんが、旧バージョンとの互換性のために保持されています。This inconsistency in the permissions hierarchy has been preserved for the sake of backward compatibility. 将来のリリースでは削除される予定です。It will be removed in a future release.

システム ストアド プロシージャ sp_helprotect では、データベース レベルのセキュリティ保護可能なリソースに対する権限をレポートします。The sp_helprotect system stored procedure reports permissions on a database-level securable.

WITH GRANT OPTIONWITH GRANT OPTION

GRANT ...WITH GRANT OPTION は、権限を受け取るセキュリティ プリンシパルが、指定された権限を他のセキュリティ アカウントに付与する能力を与えられることを意味します。The GRANT ... WITH GRANT OPTION specifies that the security principal receiving the permission is given the ability to grant the specified permission to other security accounts. 権限を与えられるプリンシパルがロールまたは Windows グループである場合、グループまたはロールのメンバーではないユーザーにオブジェクト権限をさらに付与する必要があるときは、AS 句を使用する必要があります。When the principal that receives the permission is a role or a Windows group, the AS clause must be used when the object permission needs to be further granted to users who are not members of the group or role. GRANT ステートメントを実行できるのはグループまたはロールではなくユーザーだけなので、グループまたはロールの特定のメンバーは、権限を付与するときに、AS 句を使用して、ロールまたはグループのメンバーシップを明示的に呼び出す必要があります。Because only a user, rather than a group or role, can execute a GRANT statement, a specific member of the group or role must use the AS clause to explicitly invoke the role or group membership when granting the permission. 次の例では、ロールまたは Windows グループに付与するときの WITH GRANT OPTION の使用方法を示します。The following example shows how the WITH GRANT OPTION is used when granted to a role or Windows group.

-- 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 権限の一覧表Chart of SQL Server Permissions

データベース エンジンDatabase Engine のすべてのアクセス許可を示した pdf 形式のポスター サイズの一覧表については、https://aka.ms/sql-permissions-poster を参照してください。For a poster sized chart of all データベース エンジンDatabase Engine permissions in pdf format, see https://aka.ms/sql-permissions-poster.

アクセス許可Permissions

権限の許可者 (または AS オプションで指定されたプリンシパル) は、GRANT OPTION によって与えられた権限を保持しているか、権限が暗黙的に与えられる上位の権限を保持している必要があります。The grantor (or the principal specified with the AS option) must have either the permission itself with GRANT OPTION, or a higher permission that implies the permission being granted. AS オプションを使用する場合は、追加の要件を満たす必要があります。If using the AS option, additional requirements apply. 詳細については、セキュリティ保護可能なリソース別の記事を参照してください。See the securable-specific article for details.

オブジェクトの所有者は、所有するオブジェクトの権限を許可できます。Object owners can grant permissions on the objects they own. セキュリティ保護可能なリソースに対して CONTROL 権限があるプリンシパルは、そのリソースの権限を許可できます。Principals with CONTROL permission on a securable can grant permission on that securable.

sysadmin 固定サーバー ロールのメンバーなど、CONTROL SERVER 権限が許可されているユーザーは、サーバー内のセキュリティ保護可能なリソースに対する権限を許可できます。Grantees of CONTROL SERVER permission, such as members of the sysadmin fixed server role, can grant any permission on any securable in the server. db_owner 固定データベース ロールのメンバーなど、データベースに対する CONTROL 権限が許可されているユーザーは、データベース内のセキュリティ保護可能なリソースに対する権限を許可できます。Grantees of CONTROL permission on a database, such as members of the db_owner fixed database role, can grant any permission on any securable in the database. スキーマに対する CONTROL 権限が許可されているユーザーは、スキーマ内のオブジェクトに対する権限を許可できます。Grantees of CONTROL permission on a schema can grant any permission on any object within the schema.

Examples

次の表は、セキュリティ保護可能なリソースと、その構文について説明している記事の一覧です。The following table lists the securables and the articles that describe the securable-specific syntax.

セキュリティ保護可能Securable GRANT 構文GRANT Syntax
アプリケーション ロールApplication Role GRANT (データベース プリンシパルの権限の許可) (Transact-SQL)GRANT Database Principal Permissions (Transact-SQL)
アセンブリAssembly GRANT (アセンブリの権限の許可) (Transact-SQL)GRANT Assembly Permissions (Transact-SQL)
非対称キーAsymmetric Key GRANT (非対称キーの権限の許可) (Transact-SQL)GRANT Asymmetric Key Permissions (Transact-SQL)
可用性グループAvailability Group GRANT (可用性グループの権限の許可) (Transact-SQL)GRANT Availability Group Permissions (Transact-SQL)
CertificateCertificate GRANT (証明書の権限の許可) (Transact-SQL)GRANT Certificate Permissions (Transact-SQL)
コントラクトContract GRANT (Service Broker の権限の許可) (Transact-SQL)GRANT Service Broker Permissions (Transact-SQL)
データベースDatabase GRANT (データベースの権限の許可) (Transact-SQL)GRANT Database Permissions (Transact-SQL)
データベース スコープ資格情報Database Scoped Credential GRANT (データベース スコープの資格情報の許可) (Transact-SQL)GRANT Database Scoped Credential (Transact-SQL)
エンドポイントEndpoint GRANT (エンドポイントの権限の許可) (Transact-SQL)GRANT Endpoint Permissions (Transact-SQL)
フルテキスト カタログFull-Text Catalog GRANT (フルテキストの権限の許可) (Transact-SQL)GRANT Full-Text Permissions (Transact-SQL)
フルテキスト ストップリストFull-Text Stoplist GRANT (フルテキストの権限の許可) (Transact-SQL)GRANT Full-Text Permissions (Transact-SQL)
機能Function GRANT (オブジェクトの権限の許可) (Transact-SQL)GRANT Object Permissions (Transact-SQL)
ログインLogin GRANT (サーバー プリンシパルの権限の許可) (Transact-SQL)GRANT Server Principal Permissions (Transact-SQL)
メッセージ型Message Type GRANT (Service Broker の権限の許可) (Transact-SQL)GRANT Service Broker Permissions (Transact-SQL)
ObjectObject GRANT (オブジェクトの権限の許可) (Transact-SQL)GRANT Object Permissions (Transact-SQL)
キューQueue GRANT (オブジェクトの権限の許可) (Transact-SQL)GRANT Object Permissions (Transact-SQL)
リモート サービス バインドRemote Service Binding GRANT (Service Broker の権限の許可) (Transact-SQL)GRANT Service Broker Permissions (Transact-SQL)
RoleRole GRANT (データベース プリンシパルの権限の許可) (Transact-SQL)GRANT Database Principal Permissions (Transact-SQL)
ルートRoute GRANT (Service Broker の権限の許可) (Transact-SQL)GRANT Service Broker Permissions (Transact-SQL)
スキーマSchema GRANT (スキーマ権限の許可) (Transact-SQL)GRANT Schema Permissions (Transact-SQL)
検索プロパティ リストSearch Property List GRANT (検索プロパティ リスト権限の許可) (Transact-SQL)GRANT Search Property List Permissions (Transact-SQL)
サーバーServer GRANT (サーバーの権限の許可) (Transact-SQL)GRANT Server Permissions (Transact-SQL)
サービスService GRANT (Service Broker の権限の許可) (Transact-SQL)GRANT Service Broker Permissions (Transact-SQL)
ストアド プロシージャStored Procedure GRANT (オブジェクトの権限の許可) (Transact-SQL)GRANT Object Permissions (Transact-SQL)
対称キーSymmetric Key GRANT (対称キーの権限の許可) (Transact-SQL)GRANT Symmetric Key Permissions (Transact-SQL)
シノニムSynonym GRANT (オブジェクトの権限の許可) (Transact-SQL)GRANT Object Permissions (Transact-SQL)
システム オブジェクトSystem Objects GRANT (システム オブジェクトの権限の許可) (Transact-SQL)GRANT System Object Permissions (Transact-SQL)
テーブルTable GRANT (オブジェクトの権限の許可) (Transact-SQL)GRANT Object Permissions (Transact-SQL)
TypeType GRANT (型の権限の許可) (Transact-SQL)GRANT Type Permissions (Transact-SQL)
UserUser GRANT (データベース プリンシパルの権限の許可) (Transact-SQL)GRANT Database Principal Permissions (Transact-SQL)
表示View GRANT (オブジェクトの権限の許可) (Transact-SQL)GRANT Object Permissions (Transact-SQL)
XML スキーマ コレクションXML Schema Collection GRANT (XML スキーマ コレクションの権限の許可) (Transact-SQL)GRANT XML Schema Collection Permissions (Transact-SQL)

参照See Also