GRANT 数据库权限 (Transact-SQL)
授予对 SQL Server 中的数据库的权限。
适用范围:SQL Server(SQL Server 2008 至当前版本),Windows Azure SQL Database(初始版本至当前版本)。 |
语法
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 Database。 |
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 权限的主体可以授予对该安全对象的权限。
被授予 CONTROL SERVER 权限的用户(例如 sysadmin 固定服务器角色的成员)可以授予服务器中的任何安全对象的任意权限。
示例
A.授予创建表的权限
以下示例授予用户 MelanieK 对 AdventureWorks 数据库的 CREATE TABLE 权限。
USE AdventureWorks;
GRANT CREATE TABLE TO MelanieK;
GO
B.对应用程序角色授予 SHOWPLAN 权限
以下示例授予应用程序角色 AuditMonitor 对 AdventureWorks2012 数据库的 SHOWPLAN 权限。
适用于: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)