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

適用対象: ○SQL Server ○Azure SQL Database ○Azure SQL Data Warehouse ○Parallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

テーブル、ビュー、テーブル値関数、ストアド プロシージャ、拡張ストアド プロシージャ、スカラー関数、集計関数、サービス キュー、またはシノニムに対する権限を許可します。Grants permissions on a table, view, table-valued function, stored procedure, extended stored procedure, scalar function, aggregate function, service queue, or synonym.

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions

構文Syntax

GRANT <permission> [ ,...n ] ON   
    [ OBJECT :: ][ schema_name ]. object_name [ ( column [ ,...n ] ) ]  
    TO <database_principal> [ ,...n ]   
    [ WITH GRANT OPTION ]  
    [ AS <database_principal> ]  
  
<permission> ::=  
    ALL [ PRIVILEGES ] | permission [ ( column [ ,...n ] ) ]  
  
<database_principal> ::=   
        Database_user   
    | Database_role   
    | Application_role   
    | Database_user_mapped_to_Windows_User   
    | Database_user_mapped_to_Windows_Group   
    | Database_user_mapped_to_certificate   
    | Database_user_mapped_to_asymmetric_key   
    | Database_user_with_no_login  

引数Arguments

permissionpermission
スキーマに含まれるオブジェクトで許可できる権限を指定します。Specifies a permission that can be granted on a schema-contained object. 権限の一覧については、後の「解説」を参照してください。For a list of the permissions, see the Remarks section later in this topic.

ALLALL
ALL を指定しても、可能な権限がすべて許可されるわけではありません。Granting ALL does not grant all possible permissions. ALL を指定すると、指定したオブジェクトに適用されるすべての ANSIANSI-92 権限を許可することになります。Granting ALL is equivalent to granting all ANSIANSI-92 permissions applicable to the specified object. ALL の意味は、状況に応じて次のようになります。The meaning of ALL varies as follows:

  • スカラー関数の権限: EXECUTE、REFERENCES。Scalar function permissions: EXECUTE, REFERENCES.
  • テーブル値関数の権限: DELETE、INSERT、REFERENCES、SELECT、UPDATE。Table-valued function permissions: DELETE, INSERT, REFERENCES, SELECT, UPDATE.
  • ストアド プロシージャの権限: EXECUTE。Stored procedure permissions: EXECUTE.
  • テーブルの権限: DELETE、INSERT、REFERENCES、SELECT、UPDATE。Table permissions: DELETE, INSERT, REFERENCES, SELECT, UPDATE.
  • ビューの権限: DELETE、INSERT、REFERENCES、SELECT、UPDATE。View permissions: DELETE, INSERT, REFERENCES, SELECT, UPDATE.

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

columncolumn
権限を許可するテーブル、ビュー、またはテーブル値関数内の列の名前を指定します。Specifies the name of a column in a table, view, or table-valued function on which the permission is being granted. かっこ () が必要です。The parentheses ( ) are required. 列で許可できるのは、SELECT、REFERENCES、および UPDATE の各権限だけです。Only SELECT, REFERENCES, and UPDATE permissions can be granted on a column. column は permission 句内、またはセキュリティ保護可能なリソースの名前の後に指定できます。column can be specified in the permissions clause or after the securable name.

注意事項

テーブル レベルの 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 backward compatibility.

ON [ OBJECT :: ] [ schema_name ] .ON [ OBJECT :: ] [ schema_name ] . object_nameobject_name
権限を許可するオブジェクトを指定します。Specifies the object on which the permission is being granted. OBJECT 句は、schema_name を指定する場合は省略可能です。The OBJECT phrase is optional if schema_name is specified. OBJECT 句を使用する場合は、スコープ修飾子 (::) が必要です。If the OBJECT phrase is used, the scope qualifier (::) is required. schema_name が指定されていない場合、既定のスキーマが使用されます。If schema_name is not specified, the default schema is used. schema_name が指定されている場合、スキーマのスコープ修飾子 (.) が必要です。If schema_name is specified, the schema scope qualifier (.) is required.

TO <database_principal>TO <database_principal>
権限を許可するプリンシパルを指定します。Specifies the principal to which the permission is being granted.

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

AS <database_principal> このクエリを実行するプリンシパルが権限を許可する権利の派生元のプリンシパルを指定します。AS <database_principal> Specifies a principal from which the principal executing this query derives its right to grant the permission.

Database_userDatabase_user
データベース ユーザーを指定します。Specifies a database user.

Database_roleDatabase_role
データベース ロールを指定します。Specifies a database role.

Application_roleApplication_role
アプリケーション ロールを指定します。Specifies an application role.

Database_user_mapped_to_Windows_UserDatabase_user_mapped_to_Windows_User
Windows ユーザーにマップされているデータベース ユーザーを指定します。Specifies a database user mapped to a Windows user.

Database_user_mapped_to_Windows_GroupDatabase_user_mapped_to_Windows_Group
Windows グループにマップされているデータベース ユーザーを指定します。Specifies a database user mapped to a Windows group.

Database_user_mapped_to_certificateDatabase_user_mapped_to_certificate
証明書にマップされているデータベース ユーザーを指定します。Specifies a database user mapped to a certificate.

Database_user_mapped_to_asymmetric_keyDatabase_user_mapped_to_asymmetric_key
非対称キーにマップされているデータベース ユーザーを指定します。Specifies a database user mapped to an asymmetric key.

Database_user_with_no_loginDatabase_user_with_no_login
対応するサーバー レベルのプリンシパルがないデータベース ユーザーを指定します。Specifies a database user with no corresponding server-level principal.

RemarksRemarks

重要

権限許可対象ユーザーは、ALTER 権限と REFERENCE 権限を組み合わせて使用することで、データを表示したり、許可されていない関数を実行できる場合があります。A combination of ALTER and REFERENCE permissions in some cases could allow the grantee to view data or execute unauthorized functions. 例:テーブルの ALTER 権限と関数の REFERENCE 権限を持つユーザーは、関数を介した計算列を作成して実行できます。For example: A user with ALTER permission on a table and REFERENCE permission on a function can create a computed column over a function and have it be executed. この場合、ユーザーには計算列の SELECT 権限も必要です。In this case the user would also need SELECT permission on the computed column.

オブジェクトに関する情報は、各種カタログ ビューに表示されます。Information about objects is visible in various catalog views. 詳しくは、「オブジェクト カタログ ビュー (Transact-SQL)」をご覧ください。For more information, see Object Catalog Views (Transact-SQL).

オブジェクトは、スキーマ レベルのセキュリティ保護可能なリソースで、権限の階層で親となっているスキーマに含まれています。An object is a schema-level securable contained by the schema that is its parent in the permissions hierarchy. 次の表に、オブジェクトで許可できる権限のうち最も限定的なものを、それらを暗黙的に含む一般的な権限と共に示します。The most specific and limited permissions that can be granted on an object are listed in the following table, together with the more general permissions that include them by implication.

オブジェクト権限Object permission 権限が含まれるオブジェクト権限Implied by object permission 権限が含まれるスキーマ権限Implied by schema permission
ALTERALTER CONTROLCONTROL ALTERALTER
CONTROLCONTROL CONTROLCONTROL CONTROLCONTROL
DELETEDELETE CONTROLCONTROL DELETEDELETE
EXECUTEEXECUTE CONTROLCONTROL EXECUTEEXECUTE
INSERTINSERT CONTROLCONTROL INSERTINSERT
RECEIVERECEIVE CONTROLCONTROL CONTROLCONTROL
REFERENCESREFERENCES CONTROLCONTROL REFERENCESREFERENCES
SELECTSELECT RECEIVERECEIVE SELECTSELECT
TAKE OWNERSHIPTAKE OWNERSHIP CONTROLCONTROL CONTROLCONTROL
UPDATEUPDATE CONTROLCONTROL UPDATEUPDATE
VIEW CHANGE TRACKINGVIEW CHANGE TRACKING CONTROLCONTROL VIEW CHANGE TRACKINGVIEW CHANGE TRACKING
VIEW DEFINITIONVIEW DEFINITION CONTROLCONTROL VIEW DEFINITIONVIEW DEFINITION

アクセス許可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 you are using the AS option, the following additional requirements apply.

ASAS 必要な追加権限Additional permission required
データベース ユーザーDatabase user ユーザーに対する IMPERSONATE 権限、db_securityadmin 固定データベース ロールのメンバーシップ、db_owner 固定データベース ロールのメンバーシップ、または sysadmin 固定サーバー ロールのメンバーシップ。IMPERSONATE permission on the user, membership in the db_securityadmin fixed database role, membership in the db_owner fixed database role, or membership in the sysadmin fixed server role.
Windows ログインにマップされているデータベース ユーザーDatabase user mapped to a Windows login ユーザーに対する IMPERSONATE 権限、db_securityadmin 固定データベース ロールのメンバーシップ、db_owner 固定データベース ロールのメンバーシップ、または sysadmin 固定サーバー ロールのメンバーシップ。IMPERSONATE permission on the user, membership in the db_securityadmin fixed database role, membership in the db_owner fixed database role, or membership in the sysadmin fixed server role.
Windows グループにマップされているデータベース ユーザーDatabase user mapped to a Windows Group Windows グループのメンバーシップ、db_securityadmin 固定データベース ロールのメンバーシップ、db_owner 固定データベース ロールのメンバーシップ、または sysadmin 固定サーバー ロールのメンバーシップ。Membership in the Windows group, membership in the db_securityadmin fixed database role, membership in the db_owner fixed database role, or membership in the sysadmin fixed server role.
証明書にマップされているデータベース ユーザーDatabase user mapped to a certificate db_securityadmin 固定データベース ロールのメンバーシップ、db_owner 固定データベース ロールのメンバーシップ、または sysadmin 固定サーバー ロールのメンバーシップ。Membership in the db_securityadmin fixed database role, membership in the db_owner fixed database role, or membership in the sysadmin fixed server role.
非対称キーにマップされているデータベース ユーザーDatabase user mapped to an asymmetric key db_securityadmin 固定データベース ロールのメンバーシップ、db_owner 固定データベース ロールのメンバーシップ、または sysadmin 固定サーバー ロールのメンバーシップ。Membership in the db_securityadmin fixed database role, membership in the db_owner fixed database role, or membership in the sysadmin fixed server role.
サーバー プリンシパルにマップされていないデータベース ユーザーDatabase user not mapped to any server principal ユーザーに対する IMPERSONATE 権限、db_securityadmin 固定データベース ロールのメンバーシップ、db_owner 固定データベース ロールのメンバーシップ、または sysadmin 固定サーバー ロールのメンバーシップ。IMPERSONATE permission on the user, membership in the db_securityadmin fixed database role, membership in the db_owner fixed database role, or membership in the sysadmin fixed server role.
データベース ロールDatabase role ロールに対する ALTER 権限、db_securityadmin 固定データベース ロールのメンバーシップ、db_owner 固定データベース ロールのメンバーシップ、または sysadmin 固定サーバー ロールのメンバーシップ。ALTER permission on the role, membership in the db_securityadmin fixed database role, membership in the db_owner fixed database role, or membership in the sysadmin fixed server role.
アプリケーション ロールApplication role ロールに対する ALTER 権限、db_securityadmin 固定データベース ロールのメンバーシップ、db_owner 固定データベース ロールのメンバーシップ、または sysadmin 固定サーバー ロールのメンバーシップ。ALTER permission on the role, membership in the db_securityadmin fixed database role, membership in the db_owner fixed database role, or membership in the sysadmin fixed server role.

使用例Examples

A.A. テーブルの SELECT 権限を許可するGranting SELECT permission on a table

次の例では、AdventureWorks2012 データベース内にある Person.Address テーブルでの SELECT 権限を、ユーザー RosaQdM に対して許可します。The following example grants SELECT permission to user RosaQdM on table Person.Address in the AdventureWorks2012 database.

GRANT SELECT ON OBJECT::Person.Address TO RosaQdM;  
GO  

B.B. ストアド プロシージャの EXECUTE 権限を許可するGranting EXECUTE permission on a stored procedure

次の例では、ストアド プロシージャ HumanResources.uspUpdateEmployeeHireInfo での EXECUTE 権限を、アプリケーション ロール Recruiting11 に対して許可します。The following example grants EXECUTE permission on stored procedure HumanResources.uspUpdateEmployeeHireInfo to an application role called Recruiting11.

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

C.C. GRANT OPTION を指定してビューの REFERENCES 権限を許可するGranting REFERENCES permission on a view with GRANT OPTION

次の例では、GRANT OPTION を指定して、ビュー HumanResources.vEmployee にある列 BusinessEntityID での REFERENCES 権限を、ユーザー Wanida に対して許可します。The following example grants REFERENCES permission on column BusinessEntityID in view HumanResources.vEmployee to user Wanida with GRANT OPTION.

GRANT REFERENCES (BusinessEntityID) ON OBJECT::HumanResources.vEmployee   
    TO Wanida WITH GRANT OPTION;  
GO  

D.D. OBJECT 句を使用せずにテーブルの SELECT 権限を許可するGranting SELECT permission on a table without using the OBJECT phrase

次の例では、AdventureWorks2012 データベース内にある Person.Address テーブルでの SELECT 権限を、ユーザー RosaQdM に対して許可します。The following example grants SELECT permission to user RosaQdM on table Person.Address in the AdventureWorks2012 database.

GRANT SELECT ON Person.Address TO RosaQdM;  
GO  

E.E. テーブルの SELECT 権限をドメイン アカウントに許可するGranting SELECT permission on a table to a domain account

次の例では、AdventureWorks2012 データベース内にある Person.Address テーブルでの SELECT 権限を、ユーザー AdventureWorks2012\RosaQdM に対して許可します。The following example grants SELECT permission to user AdventureWorks2012\RosaQdM on table Person.Address in the AdventureWorks2012 database.

GRANT SELECT ON Person.Address TO [AdventureWorks2012\RosaQdM];  
GO  

F.F. プロシージャの EXECUTE 権限をロールに許可するGranting EXECUTE permission on a procedure to a role

次の例では、ロールを作成し、AdventureWorks2012 データベースのプロシージャ uspGetBillOfMaterialsEXECUTE 権限をそのロールに対して許可します。The following example creates a role and then grants EXECUTE permission to the role on procedure uspGetBillOfMaterials in the AdventureWorks2012 database.

CREATE ROLE newrole ;  
GRANT EXECUTE ON dbo.uspGetBillOfMaterials TO newrole ;  
GO  

参照See Also

DENY (オブジェクトの権限の拒否) (Transact-SQL) DENY Object Permissions (Transact-SQL)
REVOKE (オブジェクトの権限の取り消し) (Transact-SQL) REVOKE Object Permissions (Transact-SQL)
オブジェクト カタログ ビュー (Transact-SQL) Object Catalog Views (Transact-SQL)
アクセス許可 (データベース エンジン) Permissions (Database Engine)
プリンシパル (データベース エンジン) Principals (Database Engine)
Securables Securables
sys.fn_builtin_permissions (Transact-SQL) sys.fn_builtin_permissions (Transact-SQL)
HAS_PERMS_BY_NAME (Transact-SQL) HAS_PERMS_BY_NAME (Transact-SQL)
sys.fn_my_permissions (Transact-SQL)sys.fn_my_permissions (Transact-SQL)