適用対象:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Microsoft Fabric の SQL 分析エンドポイント
Microsoft Fabric のウェアハウス
Microsoft Fabric の SQL データベース
SQL Server のデータベースに対する権限を付与します。
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