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  

引数

permission
サーバーで許可できる権限を指定します。 権限の一覧については、後の「解説」を参照してください。

TO <grantee_principal> 権限が許可されている対象のプリンシパルを指定します。

AS <grantor_principal> このクエリを実行するプリンシパルが権限を許可する権利を取得した、元のプリンシパルを指定します。

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

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 カタログ ビューで確認できます。

サーバーは権限の階層の最上位となります。 次の表に、サーバーで許可できる最も限定的な権限を示します。

サーバー権限 権限が含まれるサーバー権限
一括操作の管理 制御サーバー
"任意の AVAILABILITY GROUP を変更"

適用対象: SQL Server (SQL Server 2012 (11.x) から 現在のバージョンまで)。
制御サーバー
任意の接続を変更する 制御サーバー
"任意の CREDENTIAL を変更" 制御サーバー
"任意の DATABASE を変更" 制御サーバー
"任意の ENDPOINT を変更" 制御サーバー
"任意の EVENT NOTIFICATION を変更" 制御サーバー
"任意の EVENT SESSION を変更" 制御サーバー
任意のリンク サーバーを変更する 制御サーバー
"任意の LOGIN を変更" 制御サーバー
"任意の SERVER AUDIT を変更" 制御サーバー
"任意の SERVER ROLE を変更"

適用対象: SQL Server (SQL Server 2012 (11.x) から 現在のバージョンまで)。
制御サーバー
リソースの変更 制御サーバー
サーバーの状態を変更 制御サーバー
設定を変更 制御サーバー
ALTER TRACE(トレースの変更権限) 制御サーバー
サーバーの認証 制御サーバー
どのものでも接続してください DATABASE

適用対象: SQL Server (SQL Server 2014 (12.x) から 現在のバージョンまで)。
制御サーバー
SQLに接続 制御サーバー
制御サーバー 制御サーバー
何でも作成してください DATABASE "任意の DATABASE を変更"
CREATE AVAILABILITY GROUP

適用対象: SQL Server (SQL Server 2012 (11.x) から 現在のバージョンまで)。
"任意の AVAILABILITY GROUP を変更"
DDLを作成 EVENT NOTIFICATION "任意の EVENT NOTIFICATION を変更"
CREATE ENDPOINT "任意の ENDPOINT を変更"
CREATE LOGIN

適用対象: SQL Server 2022 (16.x) 以降のバージョン。
"任意の LOGIN を変更"
CREATE SERVER ROLE

適用対象: SQL Server (SQL Server 2012 (11.x) から 現在のバージョンまで)。
"任意の SERVER ROLE を変更"
トレースを作成 EVENT NOTIFICATION "任意の EVENT NOTIFICATION を変更"
外部アクセス ASSEMBLY 制御サーバー
誰かになりすます LOGIN

適用対象: SQL Server (SQL Server 2014 (12.x) から 現在のバージョンまで)。
制御サーバー
すべての USER セキュリティ保護可能なリソースを選択する

適用対象: SQL Server (SQL Server 2014 (12.x) から 現在のバージョンまで)。
制御サーバー
SHUTDOWN 制御サーバー
Unsafe ASSEMBLY 制御サーバー
VIEW どんな人でも DATABASE VIEW 任意の定義
VIEW 任意の定義 制御サーバー
VIEW サーバーの状態 サーバーの状態を変更

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

どんなDATABASEでも接続してください許可を
DATABASEは、現在存在するすべてのデータベースおよび将来作成される可能性のあるデータベースに接続しなければならないログインへのあらゆるを付与してください。 接続以外の権限はどのデータベースにおいても一切付与されません。 SELECT ALL USER SECURABLESVIEW SERVER STATEと組み合わせることで、監査プロセスがSQL Serverインスタンス上のすべてのデータまたはすべてのデータベース状態を閲覧できるようにします。

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

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

アクセス許可

権限付与者 (または AS オプションで指定されたプリンシパル) には、 GRANT OPTION を持つ権限自体か、権限が付与されていることを意味する上位のアクセス許可が必要です。 sysadmin 固定サーバー ロールのメンバーは、すべての権限を許可できます。

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

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

USE master;  
GRANT CONTROL SERVER TO TerryEminhizer;  
GO  

B. 許可を得た許可を付与することGRANT

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

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

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

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

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)