GRANT データベース権限(Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric の SQL 分析エンドポイントMicrosoft Fabric のウェアハウスMicrosoft Fabric の SQL データベース

SQL Server のデータベースに対する権限を付与します。

Transact-SQL 構文表記規則

Syntax


GRANT <permission> [ ,...n ]
    TO <database_principal> [ ,...n ] [ WITH GRANT OPTION ]
    [ AS <database_principal> ]

<permission>::=
permission | ALL [ PRIVILEGES ]

<database_principal> ::=
    Database_user
  | Database_role
  | Application_role
  | Database_user_mapped_to_Windows_User
  | Database_user_mapped_to_Windows_Group
  | Database_user_mapped_to_certificate
  | Database_user_mapped_to_asymmetric_key
  | Database_user_with_no_login

Arguments

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

ALL: このオプションに設定しても、可能な権限がすべて許可されるわけではありません。 ALLを付与することは、 BACKUPDATABASE、 BACKUP LOG、 CREATE DEFAULT、 CREATE FUNCTION、 CREATE PROCEDURE、 CREATE RULE、 CREATE TABLE、 CREATE VIEWの権限を付与することと同等です。

PRIVILEGES: ANSI-92 準拠のために用意されています。 ALL の動作は変更されません。

WITH GRANT オプションは、プリンシパルが他のプリンシパルにも指定された権限を与える権限が与えられることを示します。

AS このクエリを実行するプリンシパルが権限を許可する権利の派生元のプリンシパルを指定します。

Database_user: データベース ユーザーを指定します。

Database_role: データベース ロールを指定します。

Application_role適用対象: SQL Server 2008 (10.0.x) 以降、SQL Database

アプリケーション ロールを指定します。

Database_user_mapped_to_Windows_User適用対象: SQL Server 2008 (10.0.x) 以降

Windows ユーザーにマップされているデータベース ユーザーを指定します。

Database_user_mapped_to_Windows_Group適用対象: SQL Server 2008 (10.0.x) 以降

Windows グループにマップされているデータベース ユーザーを指定します。

Database_user_mapped_to_certificate適用対象: SQL Server 2008 (10.0.x) 以降

証明書にマップされているデータベース ユーザーを指定します。

Database_user_mapped_to_asymmetric_key適用対象: SQL Server 2008 (10.0.x) 以降

非対称キーにマップされているデータベース ユーザーを指定します。

Database_user_with_no_login: 対応するサーバー レベルのプリンシパルがないデータベース ユーザーを指定します。

Remarks

Important

権限許可対象ユーザーは、ALTER 権限と REFERENCE 権限を組み合わせて使用することで、データを表示したり、許可されていない関数を実行できる場合があります。 次に例を示します。テーブルの ALTER 権限と関数の REFERENCE 権限を持つユーザーは、関数を介した計算列を作成して実行できます。 この場合、ユーザーには計算列の SELECT 権限も必要です。

データベースは、セキュリティ保護可能なリソースで、権限の階層で親となっているサーバーに含まれています。 次の表に、データベースで許可できる権限のうち最も限定的なものを、それらを暗黙的に含む一般的な権限と共に示します。

データベース許可 権限が含まれるデータベース権限 権限が含まれるサーバー権限
一括操作 DATABASE 管理する
適用対象: SQL Database。
CONTROL 制御サーバー
ALTER CONTROL "任意の DATABASE を変更"
"任意の APPLICATION ROLE を変更" ALTER 制御サーバー
"任意の ASSEMBLY を変更" ALTER 制御サーバー
"任意の ASYMMETRIC KEY を変更" ALTER 制御サーバー
"任意の CERTIFICATE を変更" ALTER 制御サーバー
"任意の COLUMN ENCRYPTION KEY を変更" ALTER 制御サーバー
COLUMN MASTER KEY定義を変える ALTER 制御サーバー
"任意の CONTRACT を変更" ALTER 制御サーバー
監査 DATABASE を変更する ALTER "任意の SERVER AUDIT を変更"
DDL DATABASE 変更 TRIGGER ALTER 制御サーバー
ALTER ANY(変えて) DATABASEEVENT NOTIFICATION ALTER "任意の EVENT NOTIFICATION を変更"
ALTER ANY(変えて) DATABASEEVENT SESSION
適用対象: SQL Database。
ALTER "任意の EVENT SESSION を変更"
"任意の DATABASE SCOPED CONFIGURATION を変更"
適用対象: SQL Server 2016 (13.x) 以降、SQL Database。
CONTROL 制御サーバー
任意のデータスペースを変更する ALTER 制御サーバー
"任意の EXTERNAL DATA SOURCE を変更" ALTER 制御サーバー
"任意の EXTERNAL FILE FORMAT を変更" ALTER 制御サーバー
"任意の EXTERNAL LIBRARY を変更"
適用対象: SQL Server 2017 (14.x)
CONTROL 制御サーバー
"任意の FULLTEXT CATALOG を変更" ALTER 制御サーバー
任意のマスクを変更します。 CONTROL 制御サーバー
"任意の MESSAGE TYPE を変更" ALTER 制御サーバー
"任意の REMOTE SERVICE BINDING を変更" ALTER 制御サーバー
"任意の ROLE を変更" ALTER 制御サーバー
"任意の ROUTE を変更" ALTER 制御サーバー
"任意の SCHEMA を変更" ALTER 制御サーバー
"任意の SECURITY POLICY を変更"
適用対象: Azure SQL データベース
CONTROL 制御サーバー
"任意の SENSITIVITY CLASSIFICATION を変更"
適用対象: SQL Server (SQL Server 2019 以降)、Azure SQL Database。
CONTROL 制御サーバー
"任意の SERVICE を変更" ALTER 制御サーバー
"任意の SYMMETRIC KEY を変更" ALTER 制御サーバー
"任意の USER を変更" ALTER 制御サーバー
AUTHENTICATE CONTROL サーバーの認証
BACKUP DATABASE CONTROL 制御サーバー
BACKUP ログ CONTROL 制御サーバー
CHECKPOINT CONTROL 制御サーバー
CONNECT コネクト・レプリケーション 制御サーバー
コネクト・レプリケーション CONTROL 制御サーバー
CONTROL CONTROL 制御サーバー
CREATE AGGREGATE ALTER 制御サーバー
何でも作成してください EXTERNAL LIBRARY
適用対象: SQL Server 2017 (14.x)
CONTROL 制御サーバー
CREATE ASSEMBLY "任意の ASSEMBLY を変更" 制御サーバー
CREATE ASYMMETRIC KEY "任意の ASYMMETRIC KEY を変更" 制御サーバー
CREATE CERTIFICATE "任意の CERTIFICATE を変更" 制御サーバー
CREATE CONTRACT "任意の CONTRACT を変更" 制御サーバー
CREATE DATABASE CONTROL 何でも作成してください DATABASE
CREATE DATABASE Ddl EVENT NOTIFICATION ALTER ANY(変えて) DATABASEEVENT NOTIFICATION DDLを作成 EVENT NOTIFICATION
CREATE DEFAULT ALTER 制御サーバー
CREATE FULLTEXT CATALOG "任意の FULLTEXT CATALOG を変更" 制御サーバー
CREATE FUNCTION ALTER 制御サーバー
CREATE MESSAGE TYPE "任意の MESSAGE TYPE を変更" 制御サーバー
CREATE PROCEDURE ALTER 制御サーバー
CREATE QUEUE ALTER 制御サーバー
CREATE REMOTE SERVICE BINDING "任意の REMOTE SERVICE BINDING を変更" 制御サーバー
CREATE ROLE "任意の ROLE を変更" 制御サーバー
CREATE ROUTE "任意の ROUTE を変更" 制御サーバー
CREATE RULE ALTER 制御サーバー
CREATE SCHEMA "任意の SCHEMA を変更" 制御サーバー
CREATE SERVICE "任意の SERVICE を変更" 制御サーバー
CREATE SYMMETRIC KEY "任意の SYMMETRIC KEY を変更" 制御サーバー
CREATE SYNONYM ALTER 制御サーバー
CREATE TABLE ALTER 制御サーバー
CREATE TYPE ALTER 制御サーバー
CREATE VIEW ALTER 制御サーバー
CREATE XML SCHEMA COLLECTION ALTER 制御サーバー
DELETE CONTROL 制御サーバー
EXECUTE CONTROL 制御サーバー
任意の外部を実行する ENDPOINT
適用対象: Azure SQL データベース
CONTROL 制御サーバー
EXECUTE ANY EXTERNAL SCRIPT
適用対象: SQL Server 2016 (13.x)
CONTROL 制御サーバー
外部スクリプトを実行する
適用対象: SQL Server 2019 (15.x)。
外部スクリプトを実行する 制御サーバー
INSERT CONTROL 制御サーバー
接続 DATABASE 切断
適用対象: Azure SQL データベース
CONTROL 任意の接続を変更する
REFERENCES CONTROL 制御サーバー
SELECT CONTROL 制御サーバー
SHOWPLAN CONTROL ALTER TRACE(トレースの変更権限)
クエリ通知をサブスクライブする CONTROL 制御サーバー
所有権 CONTROL 制御サーバー
UNMASK CONTROL 制御サーバー
UPDATE CONTROL 制御サーバー
VIEW 任意の COLUMN ENCRYPTION KEY 定義 CONTROL VIEW 任意の定義
VIEW 任意の COLUMN MASTER KEY 定義 CONTROL VIEW 任意の定義
VIEW DATABASE 州 CONTROL VIEW サーバーの状態
VIEW 定義 CONTROL VIEW 任意の定義

Permissions

付与者(またはASオプションで指定されたプリンシパル)は、OPTION付きの許可自体、または付与される許可を示唆するより高い権限のいずれか GRANT 持っている必要があります。

AS オプションを使用している場合は、次の追加要件があります。

granting_principal 必要な追加権限
データベース ユーザー ユーザーに対する IMPERSONATE 権限、db_securityadmin 固定データベース ロールのメンバーシップ、db_owner 固定データベース ロールのメンバーシップ、または sysadmin 固定サーバー ロールのメンバーシップ。
Windows ログインにマップされているデータベース ユーザー ユーザーに対する IMPERSONATE 権限、db_securityadmin 固定データベース ロールのメンバーシップ、db_owner 固定データベース ロールのメンバーシップ、または sysadmin 固定サーバー ロールのメンバーシップ。
Windows グループにマップされているデータベース ユーザー Windows グループのメンバーシップ、db_securityadmin 固定データベース ロールのメンバーシップ、db_owner 固定データベース ロールのメンバーシップ、または sysadmin 固定サーバー ロールのメンバーシップ。
証明書にマップされているデータベース ユーザー db_securityadmin 固定データベース ロールのメンバーシップ、db_owner 固定データベース ロールのメンバーシップ、または sysadmin 固定サーバー ロールのメンバーシップ。
非対称キーにマップされているデータベース ユーザー db_securityadmin 固定データベース ロールのメンバーシップ、db_owner 固定データベース ロールのメンバーシップ、または sysadmin 固定サーバー ロールのメンバーシップ。
サーバー プリンシパルにマップされていないデータベース ユーザー ユーザーに対する IMPERSONATE 権限、db_securityadmin 固定データベース ロールのメンバーシップ、db_owner 固定データベース ロールのメンバーシップ、または sysadmin 固定サーバー ロールのメンバーシップ。
データベース ロール ロールに対する ALTER 権限、db_securityadmin 固定データベース ロールのメンバーシップ、db_owner 固定データベース ロールのメンバーシップ、または sysadmin 固定サーバー ロールのメンバーシップ。
アプリケーション ロール ロールに対する ALTER 権限、db_securityadmin 固定データベース ロールのメンバーシップ、db_owner 固定データベース ロールのメンバーシップ、または sysadmin 固定サーバー ロールのメンバーシップ。

オブジェクトの所有者は、所有するオブジェクトの権限を許可できます。 セキュリティ保護可能なリソースに対して CONTROL 権限があるプリンシパルは、そのリソースの権限を許可できます。

sysadmin 固定サーバー ロールのメンバーなど、CONTROL SERVER 権限が許可されているユーザーは、サーバー内のセキュリティ保護可能なリソースに対する権限を許可できます。

Examples

A. テーブルを作成する権限を許可する

次の例では、CREATE TABLE データベースでの AdventureWorks 権限を、ユーザー MelanieK に対して許可します。

USE AdventureWorks;
GRANT CREATE TABLE TO MelanieK;
GO

B. SHOWPLAN 権限をアプリケーション ロールに許可する

次の例では、SHOWPLAN データベースでの AdventureWorks2025 権限を、アプリケーション ロール AuditMonitor に対して許可します。

適用対象: SQL Server 2008 (10.0.x)、SQL Database

USE AdventureWorks2022;
GRANT SHOWPLAN TO AuditMonitor;
GO

C. オプション付きでCREATE VIEWを付与GRANT

次の例では、ユーザー CREATE VIEW に対して、AdventureWorks2025 データベースでの CarmineEs 権限を許可すると共に、他のプリンシパルに CREATE VIEW を許可する権利を与えます。

USE AdventureWorks2022;
GRANT CREATE VIEW TO CarmineEs WITH GRANT OPTION;
GO

D. データベース ユーザーに CONTROL 権限を許可する

次の例では、CONTROL データベースでの AdventureWorks2025 権限を、データベース ユーザー Sarah に対して許可します。 ユーザーはデータベース内に存在する必要があり、コンテキストはデータベースに設定されている必要があります。

USE AdventureWorks2022;
GRANT CONTROL ON DATABASE::AdventureWorks2022 TO Sarah;
GO

こちらもご覧ください