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

適用対象: SQL ServerAzure SQL Managed Instance

サーバーに対する権限を許可します。

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  

Note

SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。

引数

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

適用対象: SQL Server (SQL Server 2012 (11.x) から 現在のバージョンまで)。
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

適用対象: SQL Server (SQL Server 2012 (11.x) から 現在のバージョンまで)。
CONTROL SERVER
ALTER RESOURCES CONTROL SERVER
ALTER SERVER STATE CONTROL SERVER
ALTER SETTINGS CONTROL SERVER
ALTER TRACE CONTROL SERVER
AUTHENTICATE SERVER CONTROL SERVER
CONNECT ANY DATABASE

適用対象: SQL Server (SQL Server 2014 (12.x) から 現在のバージョンまで)。
CONTROL SERVER
CONNECT SQL CONTROL SERVER
CONTROL SERVER CONTROL SERVER
CREATE ANY DATABASE ALTER ANY DATABASE
CREATE AVAILABILITY GROUP

適用対象: SQL Server (SQL Server 2012 (11.x) から 現在のバージョンまで)。
ALTER ANY AVAILABILITY GROUP
CREATE DDL EVENT NOTIFICATION ALTER ANY EVENT NOTIFICATION
CREATE ENDPOINT ALTER ANY ENDPOINT
CREATE LOGIN

適用対象: SQL Server 2022 (16.x) 以降のバージョン。
ALTER ANY LOGIN
CREATE SERVER ROLE

適用対象: SQL Server (SQL Server 2012 (11.x) から 現在のバージョンまで)。
ALTER ANY SERVER ROLE
CREATE TRACE EVENT NOTIFICATION ALTER ANY EVENT NOTIFICATION
EXTERNAL ACCESS ASSEMBLY CONTROL SERVER
IMPERSONATE ANY LOGIN

適用対象: SQL Server (SQL Server 2014 (12.x) から 現在のバージョンまで)。
CONTROL SERVER
SELECT ALL USER SECURABLES

適用対象: SQL Server (SQL Server 2014 (12.x) から 現在のバージョンまで)。
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

次の 3 つのサーバー権限が、SQL Server 2014 (12.x) で追加されました。

CONNECT ANY DATABASE 権限
既存のあらゆるデータベースと今後作成されるすべての新規データベースに接続する必要のあるログインに、CONNECT ANY DATABASE を付与します。 接続以外の権限はどのデータベースにおいても一切付与されません。 SELECT ALL USER SECURABLES または VIEW SERVER STATE と組み合わせることによって、SQL Server のインスタンス上ですべてのデータやデータベースの状態を確認する監査プロセスが可能になります。

IMPERSONATE ANY LOGIN 権限
この権限が付与されていると、中間層プロセスがデータベースに接続するときに、そこに接続するクライアントのアカウントの権限を借用できます。 この権限が拒否されていると、高い特権を持つログインが他のログインの権限を借用するのをブロックできます。 たとえば、CONTROL SERVER 権限を持つログインが他のログインの権限を借用するのをブロックできます。

SELECT ALL USER SECURABLES 権限
ログインは、許可されると、ユーザーが書き込み可能なスキーマ (sys と INFORMATION_SCHEMA を除くすべてのスキーマ) が存在するテーブル、ビュー、テーブル値関数などのすべてのスキーマレベルのオブジェクトのデータを表示して、ユーザー オブジェクトを作成できます。 この権限は、ユーザーが接続できるすべてのデータベースで有効になります。 拒否されると、sys または INFORMATION_SCHEMA スキーマに含まれていない限り、すべてのオブジェクトにアクセスできなくなります。 これは、対象のオブジェクトのメタデータの可視性にも影響します。「メタデータ表示の構成」も参照してください。

アクセス許可

権限の許可者 (または AS オプションで指定されたプリンシパル) は、GRANT OPTION によって与えられた権限を保持しているか、権限が暗黙的に与えられる上位の権限を保持している必要があります。 sysadmin 固定サーバー ロールのメンバーは、すべての権限を許可できます。

A. ログインに権限を許可する

次の例では、SQL Server ログイン TerryEminhizerCONTROL SERVER 権限を許可します。

USE master;  
GRANT CONTROL SERVER TO TerryEminhizer;  
GO  

B. GRANT 権限に関する権限を許可する

次の例では、SQL Server ログイン JanethEstevesALTER ANY EVENT NOTIFICATION を許可し、この権限を他のログインに許可する権利を与えます。

USE master;  
GRANT ALTER ANY EVENT NOTIFICATION TO JanethEsteves WITH GRANT OPTION;  
GO  

C. サーバー ロールに権限を許可する

次の例では、ITDevelopers というサーバー ロールが作成されます。 ITDevelopers サーバー ロールに ALTER ANY DATABASE 権限が付与されます。

USE master;  
CREATE SERVER ROLE ITDevelopers ;  
GRANT ALTER ANY DATABASE TO ITDevelopers ;  
GO  

参照

GRANT (Transact-SQL)
DENY (Transact-SQL)
DENY (サーバーの権限の拒否) (Transact-SQL)
REVOKE (サーバーの権限の取り消し) (Transact-SQL)
権限の階層 (データベース エンジン)
プリンシパル (データベース エンジン)
権限 (データベース エンジン)
sys.fn_builtin_permissions (Transact-SQL)
sys.fn_my_permissions (Transact-SQL)
HAS_PERMS_BY_NAME (Transact-SQL)