GRANT (サーバーの権限の許可) (Transact-SQL)
サーバーに対する権限を許可します。
構文
GRANT permission [ ,...n ]
TO <grantee_principal> [ ,...n ] [ WITH GRANT OPTION ]
[ AS <grantor_principal> ]
<grantee_principal> ::= SQL_Server_login
| SQL_Server_login_mapped_to_Windows_login
| SQL_Server_login_mapped_to_Windows_group
| SQL_Server_login_mapped_to_certificate
| SQL_Server_login_mapped_to_asymmetric_key
| server_role
<grantor_principal> ::= SQL_Server_login
| SQL_Server_login_mapped_to_Windows_login
| SQL_Server_login_mapped_to_Windows_group
| SQL_Server_login_mapped_to_certificate
| SQL_Server_login_mapped_to_asymmetric_key
| server_role
引数
permission
サーバーで許可できる権限を指定します。 権限の一覧については、後の「解説」を参照してください。TO <grantee_principal>
権限を許可するプリンシパルを指定します。AS <grantor_principal>
このクエリを実行するプリンシパルが権限を許可する権利を取得した、元のプリンシパルを指定します。WITH GRANT OPTION
権限が許可されたプリンシパルが、この権限を他のプリンシパルにも許可できることを示します。SQL_Server_login
SQL Server ログインを指定します。SQL_Server_login_mapped_to_Windows_login
Windows ログインにマップされている SQL Server ログインを指定します。SQL_Server_login_mapped_to_Windows_group
Windows グループにマップされている SQL Server ログインを指定します。SQL_Server_login_mapped_to_certificate
証明書にマップされている SQL Server ログインを指定します。SQL_Server_login_mapped_to_asymmetric_key
非対称キーにマップされている SQL Server ログインを指定します。server_role
ユーザー定義サーバー ロールを指定します。
説明
サーバー スコープの権限を許可できるのは、現在のデータベースが master のときだけです。
サーバー権限に関する情報は sys.server_permissions カタログ ビュー、サーバー プリンシパルに関する情報は sys.server_principals カタログ ビューでそれぞれ確認できます。 サーバー ロールのメンバーシップに関する情報は、sys.server_role_members カタログ ビューで確認できます。
サーバーは権限の階層の最上位となります。 次の表に、サーバーで許可できる最も限定的な権限を示します。
サーバー権限 |
権限が含まれるサーバー権限 |
---|---|
ADMINISTER BULK OPERATIONS |
CONTROL SERVER |
ALTER ANY AVAILABILITY GROUP |
CONTROL SERVER |
ALTER ANY CONNECTION |
CONTROL SERVER |
ALTER ANY CREDENTIAL |
CONTROL SERVER |
ALTER ANY DATABASE |
CONTROL SERVER |
ALTER ANY ENDPOINT |
CONTROL SERVER |
ALTER ANY EVENT NOTIFICATION |
CONTROL SERVER |
ALTER ANY EVENT SESSION |
CONTROL SERVER |
ALTER ANY LINKED SERVER |
CONTROL SERVER |
ALTER ANY LOGIN |
CONTROL SERVER |
ALTER ANY SERVER AUDIT |
CONTROL SERVER |
ALTER ANY SERVER ROLE |
CONTROL SERVER |
ALTER RESOURCES |
CONTROL SERVER |
ALTER SERVER STATE |
CONTROL SERVER |
ALTER SETTINGS |
CONTROL SERVER |
ALTER TRACE |
CONTROL SERVER |
AUTHENTICATE SERVER |
CONTROL SERVER |
CONNECT SQL |
CONTROL SERVER |
CONTROL SERVER |
CONTROL SERVER |
CREATE ANY DATABASE |
ALTER ANY DATABASE |
CREATE AVAILABILITY GROUP |
ALTER ANY AVAILABILITY GROUP |
CREATE DDL EVENT NOTIFICATION |
ALTER ANY EVENT NOTIFICATION |
CREATE ENDPOINT |
ALTER ANY ENDPOINT |
CREATE SERVER ROLE |
ALTER ANY SERVER ROLE |
CREATE TRACE EVENT NOTIFICATION |
ALTER ANY EVENT NOTIFICATION |
EXTERNAL ACCESS ASSEMBLY |
CONTROL SERVER |
SHUTDOWN |
CONTROL SERVER |
UNSAFE ASSEMBLY |
CONTROL SERVER |
VIEW ANY DATABASE |
VIEW ANY DEFINITION |
VIEW ANY DEFINITION |
CONTROL SERVER |
VIEW SERVER STATE |
ALTER SERVER STATE |
権限
権限の許可者 (または AS オプションで指定されたプリンシパル) は、GRANT OPTION によって与えられた権限を保持しているか、権限が暗黙的に与えられる上位の権限を保持している必要があります。 sysadmin 固定サーバー ロールのメンバーは、すべての権限を許可できます。
使用例
A. ログインに権限を許可する
次の例では、SQL Server ログイン TerryEminhizer に CONTROL SERVER 権限を許可します。
USE master;
GRANT CONTROL SERVER TO TerryEminhizer;
GO
B. GRANT 権限に関する権限を許可する
次の例では、SQL Server ログイン JanethEsteves に、ALTER ANY EVENT NOTIFICATION 権限を許可し、この権限を他のログインに許可する権利を与えます。
USE master;
GRANT ALTER ANY EVENT NOTIFICATION TO JanethEsteves WITH GRANT OPTION;
GO
C. サーバー ロールに権限を許可する
次の例では、ITDevAdmin および ITDevelopers という名前の 2 つのサーバー ロールを作成します。 ここでは、WITH GRANT オプションを含めて、ALTER ANY DATABASE 権限を ITDevAdmin ユーザー定義サーバー ロールに許可します。これにより、ITDevAdmin サーバー ロールは、ALTER ANY DATABASE 権限を再割り当てすることができます。 次に、ITDevAdmin サーバー ロールの ALTER ANY DATABASE 権限を使用する権限を ITDevelopers に許可します。
USE master;
CREATE SERVER ROLE ITDevAdmin ;
CREATE SERVER ROLE ITDevelopers ;
GRANT ALTER ANY DATABASE TO ITDevAdmin WITH GRANT OPTION ;
GRANT ALTER ANY DATABASE TO ITDevelopers AS ITDevAdmin ;
GO
関連項目
参照
DENY (サーバーの権限の拒否) (Transact-SQL)
REVOKE (サーバーの権限の取り消し) (Transact-SQL)
sys.fn_builtin_permissions (Transact-SQL)
sys.fn_my_permissions (Transact-SQL)
HAS_PERMS_BY_NAME (Transact-SQL)