GRANT (データベースの権限の許可) (Transact-SQL)
SQL Server のデータベースに対する権限を許可します。
適用対象: SQL Server (SQL Server 2008 から現在のバージョンまで)、Windows Azure SQL データベース (初回のリリースから現在のバージョンまで) |
構文
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
引数
permission
データベースで許可できる権限を指定します。 権限の一覧については、後の「解説」を参照してください。ALL
このオプションでは、可能な権限がすべて許可されるわけではありません。 ALL を指定した場合は、BACKUP DATABASE、BACKUP LOG、CREATE DATABASE、CREATE DEFAULT、CREATE FUNCTION、CREATE PROCEDURE、CREATE RULE、CREATE TABLE、CREATE VIEW 権限を許可することになります。PRIVILEGES
ISO 準拠のために用意されています。 ALL の動作は変更されません。WITH GRANT OPTION
権限が許可されたプリンシパルが、この権限を他のプリンシパルにも許可できることを示します。AS <database_principal>
このクエリを実行するプリンシパルが権限を許可する権利を取得した、元のプリンシパルを指定します。Database_user
データベース ユーザーを指定します。Database_role
データベース ロールを指定します。Application_role
適用対象: SQL Server 2008 から SQL Server 2014。
アプリケーション ロールを指定します。
Database_user_mapped_to_Windows_User
適用対象: SQL Server 2008 から SQL Server 2014。
Windows ユーザーにマップされているデータベース ユーザーを指定します。
Database_user_mapped_to_Windows_Group
適用対象: SQL Server 2008 から SQL Server 2014。
Windows グループにマップされているデータベース ユーザーを指定します。
Database_user_mapped_to_certificate
適用対象: SQL Server 2008 から SQL Server 2014。
証明書にマップされているデータベース ユーザーを指定します。
Database_user_mapped_to_asymmetric_key
適用対象: SQL Server 2008 から SQL Server 2014。
非対称キーにマップされているデータベース ユーザーを指定します。
Database_user_with_no_login
対応するサーバー レベルのプリンシパルがないデータベース ユーザーを指定します。
説明
重要
権限許可対象ユーザーは、ALTER 権限と REFERENCE 権限を組み合わせて使用することで、データを表示したり、許可されていない関数を実行できる場合があります。たとえば、テーブルの ALTER 権限と関数の REFERENCE 権限を持つユーザーは、関数を介した計算列を作成して実行できます。この場合、ユーザーには計算列の SELECT 権限も必要です。
データベースは、セキュリティ保護可能なリソースで、権限の階層で親となっているサーバーに含まれています。 次の表に、データベースで許可できる権限のうち最も限定的なものを、それらを暗黙的に含む一般的な権限と共に示します。
データベース権限 |
権限が含まれるデータベース権限 |
権限が含まれるサーバー権限 |
|
---|---|---|---|
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 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 適用対象: Windows Azure SQL データベース。 |
ALTER |
ALTER ANY EVENT SESSION |
|
ALTER ANY DATASPACE |
ALTER |
CONTROL SERVER |
|
ALTER ANY FULLTEXT CATALOG |
ALTER |
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 |
|
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 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 |
|
INSERT |
CONTROL |
CONTROL SERVER |
|
KILL DATABASE CONNECTION
|
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 |
|
UPDATE |
CONTROL |
CONTROL SERVER |
|
VIEW DATABASE STATE |
CONTROL |
VIEW SERVER STATE |
|
VIEW DEFINITION |
CONTROL |
VIEW ANY DEFINITION |
権限
権限の許可者 (または AS オプションで指定されたプリンシパル) は、GRANT OPTION によって与えられた権限を保持しているか、権限が暗黙的に与えられる上位の権限を保持している必要があります。
AS オプションを使用する場合は、次の追加要件があります。
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 権限が許可されているユーザーは、サーバー内のセキュリティ保護可能なリソースに対する権限を許可できます。
使用例
A. テーブルを作成する権限を許可する
次の例では、データベース AdventureWorks での CREATE TABLE 権限を、ユーザー MelanieK に対して許可します。
USE AdventureWorks;
GRANT CREATE TABLE TO MelanieK;
GO
B. SHOWPLAN 権限をアプリケーション ロールに許可する
次の例では、データベース AdventureWorks2012 での SHOWPLAN 権限を、アプリケーション ロール AuditMonitor に対して許可します。
適用対象: SQL Server 2008 から SQL Server 2014。 |
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
関連項目
参照
sys.database_permissions (Transact-SQL)
sys.database_principals (Transact-SQL)
CREATE DATABASE (SQL Server Transact-SQL)