GRANT (サーバーの権限の許可) (Transact-SQL)
適用対象: SQL Server
Azure SQL Managed Instance
サーバーに対する権限を許可します。
構文
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 ログイン 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. サーバー ロールに権限を許可する
次の例では、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)