GRANT 数据库主体权限 (Transact-SQL)

授予对数据库用户、数据库角色或应用程序角色的权限。

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

语法

GRANT permission [ ,...n ]  
    ON 
    {  [ USER :: database_user ]
              | [ ROLE :: database_role ]
       | [ APPLICATION ROLE :: application_role ]
    }
    TO <database_principal> [ ,...n ]
    [ WITH GRANT OPTION ]
        [ AS <database_principal> ]

<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
    指定可对数据库主体授予的权限。 有关权限的列表,请参阅本主题后面的“备注”部分。

  • USER ::database_user
    指定要对其授予权限的用户的类和名称。 需要使用范围限定符 (::)。

  • ROLE ::database_role
    指定要对其授予权限的角色的类和名称。 需要使用范围限定符 (::)。

  • APPLICATION ROLE ::application_role
    指定要对其授予权限的应用程序角色的类和名称。 需要使用范围限定符 (::)。

  • WITH GRANT OPTION
    指示该主体还可以向其他主体授予所指定的权限。

  • AS <database_principal>
    指定执行此查询的主体要从哪个主体派生其授予该权限的权限。

  • Database_user
    指定数据库用户。

  • Database_role
    指定数据库角色。

  • Application_role
    指定应用程序角色。

  • Database_user_mapped_to_Windows_User
    指定映射到 Windows 用户的数据库用户。

  • Database_user_mapped_to_Windows_Group
    指定映射到 Windows 组的数据库用户。

  • Database_user_mapped_to_certificate
    指定映射到证书的数据库用户。

  • Database_user_mapped_to_asymmetric_key
    指定映射到非对称密钥的数据库用户。

  • Database_user_with_no_login
    指定无相应服务器级主体的数据库用户。

注释

可以在 sys.database_principals 目录视图中查看有关数据库主体的信息。 可以在 sys.database_permissions 目录视图中查看有关数据库级权限的信息。

数据库用户权限

数据库用户是一个数据库级的安全对象,包含于权限层次结构中作为其父级的数据库中。 下表列出了可授予的对数据库用户最为具体的限定权限,以及隐含这些权限的更为通用的权限。

数据库用户权限

数据库用户权限隐含的权限

数据库权限隐含的权限

CONTROL

CONTROL

CONTROL

IMPERSONATE

CONTROL

CONTROL

ALTER

CONTROL

ALTER ANY USER

VIEW DEFINITION

CONTROL

VIEW DEFINITION

数据库角色权限

数据库角色是一个数据库级的安全对象,包含于权限层次结构中作为其父级的数据库中。 下表列出了可授予的对数据库角色最为具体的限定权限,以及隐含这些权限的更为通用的权限。

数据库角色权限

数据库角色权限隐含的权限

数据库权限隐含的权限

CONTROL

CONTROL

CONTROL

TAKE OWNERSHIP

CONTROL

CONTROL

ALTER

CONTROL

ALTER ANY ROLE

VIEW DEFINITION

CONTROL

VIEW DEFINITION

应用程序角色权限

应用程序角色是数据库级的安全对象,包含于权限层次结构中作为其父级的数据库中。 下面列出了可授予的对应用程序角色最为具体的限定权限,以及隐含这些权限的更为通用的权限。

应用程序角色权限

应用程序角色权限隐含的权限

数据库权限隐含的权限

CONTROL

CONTROL

CONTROL

ALTER

CONTROL

ALTER ANY APPLICATION ROLE

VIEW DEFINITION

CONTROL

VIEW 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 权限的用户(例如 db_owner 固定数据库角色的成员)可以授予数据库中任何安全对象的任意权限。

示例

A.将对某个用户的 CONTROL 权限授予另一个用户

以下示例将对 AdventureWorks2012 用户 Wanida 的 CONTROL 权限授予用户 RolandX。

USE AdventureWorks2012;
GRANT CONTROL ON USER::Wanida TO RolandX;
GO

B.使用 GRANT OPTION 将对角色的 VIEW DEFINITION 权限授予用户

以下示例使用 GRANT OPTION,将对 AdventureWorks2012 角色 SammamishParking 的 VIEW DEFINITION 权限授予数据库用户 JinghaoLiu。

USE AdventureWorks2012;
GRANT VIEW DEFINITION ON ROLE::SammamishParking 
    TO JinghaoLiu WITH GRANT OPTION;
GO

C.将对用户的 IMPERSONATE 权限授予应用程序角色

以下示例将对用户 HamithaL 的 IMPERSONATE 权限授予 AdventureWorks2012 应用程序角色 AccountsPayable17。

USE AdventureWorks2012;
GRANT IMPERSONATE ON USER::HamithaL TO AccountsPayable17;
GO  

请参阅

参考

DENY 数据库主体权限 (Transact-SQL)

REVOKE 数据库主体权限 (Transact-SQL)

sys.database_principals (Transact-SQL)

sys.database_permissions (Transact-SQL)

CREATE USER (Transact-SQL)

CREATE APPLICATION ROLE (Transact-SQL)

CREATE ROLE (Transact-SQL)

GRANT (Transact-SQL)

概念

权限(数据库引擎)

主体(数据库引擎)