GRANT (データベースの権限の許可) (Transact-SQL)
適用対象:SQL Server (サポートされているすべてのバージョン)
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL Server のデータベースに対する権限を付与します。
構文
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
Note
SQL Server 2014 以前の Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。
引数
permission: データベースで許可できる権限を指定します。 権限の一覧については、後の「解説」を参照してください。
ALL: このオプションに設定しても、可能な権限がすべて許可されるわけではありません。 ALL を指定すると、次のアクセス許可が許可されます。BACKUP DATABASE、BACKUP LOG、CREATE DEFAULT、CREATE FUNCTION、CREATE PROCEDURE、CREATE RULE、CREATE TABLE、CREATE VIEW。
PRIVILEGES: ANSI-92 準拠のために用意されています。 ALL の動作は変更されません。
WITH GRANT OPTION: 権限が許可されたプリンシパルが、この権限を他のプリンシパルにも許可できることを示します。
AS
Database_user: データベース ユーザーを指定します。 Database_role: データベース ロールを指定します。 Application_role適用対象: SQL Server 2008 以降、SQL Database アプリケーション ロールを指定します。 Database_user_mapped_to_Windows_User適用対象: SQL Server 2008 以降 Windows ユーザーにマップされているデータベース ユーザーを指定します。 Database_user_mapped_to_Windows_Group適用対象: SQL Server 2008 以降 Windows グループにマップされているデータベース ユーザーを指定します。 Database_user_mapped_to_certificate適用対象: SQL Server 2008 以降 証明書にマップされているデータベース ユーザーを指定します。 Database_user_mapped_to_asymmetric_key適用対象: SQL Server 2008 以降 非対称キーにマップされているデータベース ユーザーを指定します。 Database_user_with_no_login: 対応するサーバー レベルのプリンシパルがないデータベース ユーザーを指定します。 重要 権限許可対象ユーザーは、ALTER 権限と REFERENCE 権限を組み合わせて使用することで、データを表示したり、許可されていない関数を実行できる場合があります。 次に例を示します。テーブルの ALTER 権限と関数の REFERENCE 権限を持つユーザーは、関数を介した計算列を作成して実行できます。 この場合、ユーザーには計算列の SELECT 権限も必要です。 データベースは、セキュリティ保護可能なリソースで、権限の階層で親となっているサーバーに含まれています。 次の表に、データベースで許可できる権限のうち最も限定的なものを、それらを暗黙的に含む一般的な権限と共に示します。 権限の許可者 (または AS オプションで指定されたプリンシパル) は、GRANT OPTION によって与えられた権限を保持しているか、権限が暗黙的に与えられる上位の権限を保持している必要があります。 AS オプションを使用している場合は、次の追加要件があります。 オブジェクトの所有者は、所有するオブジェクトの権限を許可できます。 セキュリティ保護可能なリソースに対して CONTROL 権限があるプリンシパルは、そのリソースの権限を許可できます。 sysadmin 固定サーバー ロールのメンバーなど、CONTROL SERVER 権限が許可されているユーザーは、サーバー内のセキュリティ保護可能なリソースに対する権限を許可できます。 次の例では、 次の例では、 適用対象: SQL Server 2008 以降、SQL Database 次の例では、ユーザー 次の例では、解説
データベース権限
権限が含まれるデータベース権限
権限が含まれるサーバー権限
ADMINISTER DATABASE BULK OPERATIONS
適用対象: SQL Database。CONTROL
CONTROL SERVER
ALTER
CONTROL
ALTER ANY DATABASE
ALTER ANY APPLICATION ROLE
ALTER
CONTROL SERVER
ALTER ANY ASSEMBLY
ALTER
CONTROL SERVER
ALTER ANY ASYMMETRIC KEY
ALTER
CONTROL SERVER
ALTER ANY CERTIFICATE
ALTER
CONTROL SERVER
任意の列の暗号化キーを変更します。
ALTER
CONTROL SERVER
ALTER ANY COLUMN MASTER KEY DEFINITION
ALTER
CONTROL SERVER
ALTER ANY CONTRACT
ALTER
CONTROL SERVER
ALTER ANY DATABASE AUDIT
ALTER
ALTER ANY SERVER AUDIT
ALTER ANY DATABASE DDL TRIGGER
ALTER
CONTROL SERVER
ALTER ANY DATABASE EVENT NOTIFICATION
ALTER
ALTER ANY EVENT NOTIFICATION
ALTER ANY DATABASE EVENT SESSION
適用対象: SQL Database。ALTER
ALTER ANY EVENT SESSION
ALTER ANY DATABASE SCOPED CONFIGURATION
適用対象: SQL Server 2016 (13.x) 以降、SQL Database。CONTROL
CONTROL SERVER
ALTER ANY DATASPACE
ALTER
CONTROL SERVER
すべての外部データ ソースを変更します。
ALTER
CONTROL SERVER
任意の外部のファイル形式を変更します。
ALTER
CONTROL SERVER
ALTER ANY EXTERNAL LIBRARY
適用対象: SQL Server 2017 (14.x)CONTROL
CONTROL SERVER
ALTER ANY FULLTEXT CATALOG
ALTER
CONTROL SERVER
任意のマスクを変更します。
CONTROL
CONTROL SERVER
ALTER ANY MESSAGE TYPE
ALTER
CONTROL SERVER
ALTER ANY REMOTE SERVICE BINDING
ALTER
CONTROL SERVER
ALTER ANY ROLE
ALTER
CONTROL SERVER
ALTER ANY ROUTE
ALTER
CONTROL SERVER
ALTER ANY SCHEMA
ALTER
CONTROL SERVER
すべてのセキュリティ ポリシーを変更します。
適用対象: Azure SQL データベースCONTROL
CONTROL SERVER
ALTER ANY SENSITIVITY CLASSIFICATION
適用対象: SQL Server (SQL Server 2019 以降)、Azure SQL Database。CONTROL
CONTROL SERVER
ALTER ANY SERVICE
ALTER
CONTROL SERVER
ALTER ANY SYMMETRIC KEY
ALTER
CONTROL SERVER
ALTER ANY USER
ALTER
CONTROL SERVER
AUTHENTICATE
CONTROL
AUTHENTICATE SERVER
BACKUP DATABASE
CONTROL
CONTROL SERVER
BACKUP LOG
CONTROL
CONTROL SERVER
CHECKPOINT
CONTROL
CONTROL SERVER
CONNECT
CONNECT REPLICATION
CONTROL SERVER
CONNECT REPLICATION
CONTROL
CONTROL SERVER
CONTROL
CONTROL
CONTROL SERVER
CREATE AGGREGATE
ALTER
CONTROL SERVER
CREATE ANY EXTERNAL LIBRARY
適用対象: SQL Server 2017 (14.x)CONTROL
CONTROL SERVER
CREATE ASSEMBLY
ALTER ANY ASSEMBLY
CONTROL SERVER
CREATE ASYMMETRIC KEY
ALTER ANY ASYMMETRIC KEY
CONTROL SERVER
CREATE CERTIFICATE
ALTER ANY CERTIFICATE
CONTROL SERVER
CREATE CONTRACT
ALTER ANY CONTRACT
CONTROL SERVER
CREATE DATABASE
CONTROL
CREATE ANY DATABASE
CREATE DATABASE DDL EVENT NOTIFICATION
ALTER ANY DATABASE EVENT NOTIFICATION
CREATE DDL EVENT NOTIFICATION
CREATE DEFAULT
ALTER
CONTROL SERVER
CREATE FULLTEXT CATALOG
ALTER ANY FULLTEXT CATALOG
CONTROL SERVER
CREATE FUNCTION
ALTER
CONTROL SERVER
CREATE MESSAGE TYPE
ALTER ANY MESSAGE TYPE
CONTROL SERVER
CREATE PROCEDURE
ALTER
CONTROL SERVER
CREATE QUEUE
ALTER
CONTROL SERVER
CREATE REMOTE SERVICE BINDING
ALTER ANY REMOTE SERVICE BINDING
CONTROL SERVER
CREATE ROLE
ALTER ANY ROLE
CONTROL SERVER
CREATE ROUTE
ALTER ANY ROUTE
CONTROL SERVER
CREATE RULE
ALTER
CONTROL SERVER
CREATE SCHEMA
ALTER ANY SCHEMA
CONTROL SERVER
CREATE SERVICE
ALTER ANY SERVICE
CONTROL SERVER
CREATE SYMMETRIC KEY
ALTER ANY SYMMETRIC KEY
CONTROL SERVER
CREATE SYNONYM
ALTER
CONTROL SERVER
CREATE TABLE
ALTER
CONTROL SERVER
CREATE TYPE
ALTER
CONTROL SERVER
CREATE VIEW
ALTER
CONTROL SERVER
CREATE XML SCHEMA COLLECTION
ALTER
CONTROL SERVER
DELETE
CONTROL
CONTROL SERVER
EXECUTE
CONTROL
CONTROL SERVER
EXECUTE ANY EXTERNAL SCRIPT
適用対象: SQL Server 2016 (13.x)CONTROL
CONTROL SERVER
EXECUTE EXTERNAL SCRIPT
適用対象: SQL Server 2019 (15.x)。EXECUTE ANY EXTERNAL SCRIPT
CONTROL SERVER
INSERT
CONTROL
CONTROL SERVER
KILL DATABASE CONNECTION
適用対象: Azure SQL データベースCONTROL
ALTER ANY CONNECTION
REFERENCES
CONTROL
CONTROL SERVER
SELECT
CONTROL
CONTROL SERVER
SHOWPLAN
CONTROL
ALTER TRACE
SUBSCRIBE QUERY NOTIFICATIONS
CONTROL
CONTROL SERVER
TAKE OWNERSHIP
CONTROL
CONTROL SERVER
マスク解除します。
CONTROL
CONTROL SERVER
UPDATE
CONTROL
CONTROL SERVER
列の暗号化キーの定義を表示します。
CONTROL
VIEW ANY DEFINITION
任意の列のマスター_キーの定義の表示
CONTROL
VIEW ANY DEFINITION
VIEW DATABASE STATE
CONTROL
VIEW SERVER STATE
VIEW DEFINITION
CONTROL
VIEW ANY DEFINITION
アクセス許可
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 固定サーバー ロールのメンバーシップ。
例
A. テーブルを作成する権限を許可する
AdventureWorks
データベースでの CREATE TABLE
権限を、ユーザー MelanieK
に対して許可します。USE AdventureWorks;
GRANT CREATE TABLE TO MelanieK;
GO
B. SHOWPLAN 権限をアプリケーション ロールに許可する
AdventureWorks2012
データベースでの SHOWPLAN
権限を、アプリケーション ロール AuditMonitor
に対して許可します。USE AdventureWorks2012;
GRANT SHOWPLAN TO AuditMonitor;
GO
C. GRANT OPTION を指定して CREATE VIEW 権限を許可する
CarmineEs
に対して、AdventureWorks2012
データベースでの CREATE VIEW
権限を許可すると共に、他のプリンシパルに CREATE VIEW
を許可する権利を与えます。USE AdventureWorks2012;
GRANT CREATE VIEW TO CarmineEs WITH GRANT OPTION;
GO
D. データベース ユーザーに CONTROL 権限を許可する
AdventureWorks2012
データベースでの CONTROL
権限を、データベース ユーザー Sarah
に対して許可します。 ユーザーはデータベース内に存在する必要があり、コンテキストはデータベースに設定されている必要があります。USE AdventureWorks2012;
GRANT CONTROL ON DATABASE::AdventureWorks2012 TO Sarah;
GO
参照