GRANT 数据库权限 (Transact-SQL)

授予对 SQL Server 中的数据库的权限。

主题链接图标 Transact-SQL 语法约定

适用范围: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

适用范围:Windows Azure SQL Database。

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)

GRANT (Transact-SQL)

概念

权限(数据库引擎)

主体(数据库引擎)