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

適用対象:SQL ServerAzure SQL Managed Instance

SQL Server ログインに対する権限を許可します。

Transact-SQL 構文表記規則

構文

GRANT permission [ ,...n ] }   
    ON   
    { [ LOGIN :: SQL_Server_login ]  
      | [ SERVER ROLE :: server_role ] }   
    TO <server_principal> [ ,...n ]  
    [ WITH GRANT OPTION ]  
    [ AS SQL_Server_login ]   
  
<server_principal> ::=   
    SQL_Server_login  
    | SQL_Server_login_from_Windows_login   
    | SQL_Server_login_from_certificate   
    | SQL_Server_login_from_AsymKey   
    | server_role  

Note

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

引数

permission
SQL Server ログインに対して許可することができる権限を指定します。 権限の一覧については、後の「解説」を参照してください。

LOGIN ::SQL_Server_login
権限を許可する対象となる SQL Server ログインを指定します。 スコープ修飾子 ( :: ) が必要です。

SERVER ROLE ::server_role
権限を許可するユーザー定義のサーバー ロールを指定します。 スコープ修飾子 ( :: ) が必要です。

TO <server_principal> 権限が許可される対象となる SQL Server ログインまたはサーバー ロールを指定します。

SQL_Server_login
SQL Server ログインの名前を指定します。

SQL_Server_login_from_Windows_login
Windows ログインから作成された SQL Server ログインの名前を指定します。

SQL_Server_login_from_certificate
証明書にマップされている SQL Server ログインの名前を指定します。

SQL_Server_login_from_AsymKey
非対称キーにマップされている SQL Server ログインの名前を指定します。

server_role
ユーザー定義サーバー ロールの名前を指定します。

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

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

解説

サーバー スコープの権限を許可できるのは、現在のデータベースが master のときだけです。

サーバー権限に関する情報は、sys.server_permissions カタログ ビューで確認できます。 サーバー プリンシパルに関する情報は、sys.server_principals カタログ ビューで確認できます。

SQL Server ログインおよびサーバー ロールはサーバー レベルのセキュリティ保護可能なリソースです。 次の表に、SQL Server ログインまたはサーバー ロールに対して許可することができる権限のうち最も明確で限定的なものを、それらを暗黙的に含む一般的な権限と共に示します。

SQL Server ログインまたはサーバー ロールの権限 権限が含まれる SQL Server ログインまたはサーバー ロールの権限 権限が含まれるサーバー権限
CONTROL CONTROL CONTROL SERVER
IMPERSONATE CONTROL CONTROL SERVER
VIEW DEFINITION CONTROL VIEW ANY DEFINITION
ALTER CONTROL ALTER ANY LOGIN

ALTER ANY SERVER ROLE

アクセス許可

ログインの場合、ログインに対する CONTROL 権限、またはサーバーに対する ALTER ANY LOGIN 権限が必要です。

サーバー ロールの場合、サーバー ロールに対する CONTROL 権限、またはサーバーに対する ALTER ANY SERVER ROLE 権限が必要です。

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

次の例では、SQL Server ログイン WanidaBenshoofIMPERSONATE 権限を、Windows ユーザー AdvWorks\YoonM から作成された SQL Server ログインに対して許可します。

USE master;  
GRANT IMPERSONATE ON LOGIN::WanidaBenshoof to [AdvWorks\YoonM];  
GO  

B. GRANT OPTION を指定して VIEW DEFINITION 権限を許可する

次の例では、SQL Server ログイン EricKurjanVIEW DEFINITION を、SQL Server ログイン RMeyyappan に対して、GRANT OPTION を使用して許可します。

USE master;  
GRANT VIEW DEFINITION ON LOGIN::EricKurjan TO RMeyyappan   
    WITH GRANT OPTION;  
GO   

C. サーバー ロールの VIEW DEFINITION 権限を許可する

次の例では、Auditors サーバー ロールに対する Sales サーバー ロールの VIEW DEFINITION を許可します。

USE master;  
GRANT VIEW DEFINITION ON SERVER ROLE::Sales TO Auditors ;  
GO   

参照

sys.server_principals (Transact-SQL)
sys.server_permissions (Transact-SQL)
CREATE LOGIN (Transact-SQL)
プリンシパル (データベース エンジン)
権限 (データベース エンジン)
セキュリティ関数 (Transact-SQL)
セキュリティ ストアド プロシージャ (Transact-SQL)