CREATE ROLE (Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric 中的 SQL 终结点Microsoft Fabric 中的仓库Microsoft Fabric SQL 数据库

在当前数据库中创建新的数据库角色。

Transact-SQL 语法约定

语法

CREATE ROLE role_name [ AUTHORIZATION owner_name ]  

参数

role_name
待创建角色的名称。

AUTHORIZATION owner_name
将拥有新角色的数据库用户或角色。 如果未指定用户,则执行 CREATE ROLE 的用户将拥有该角色。 角色的所有者或拥有角色的任何成员都可以添加或删除角色的成员。

备注

角色是数据库级别的安全对象。 在创建角色后,可以使用 GRANT、DENY 和 REVOKE 来配置角色的数据库级权限。 若要向数据库角色添加成员,请使用 ALTER ROLE (Transact-SQL)。 有关详细信息,请参阅数据库级别角色

在 sys.database_role_members 和 sys.database_principals 目录视图中可以查看数据库角色。

有关设计权限系统的信息,请参阅 Getting Started with Database Engine Permissions

注释

架构不等同于数据库用户。 使用 系统目录视图 标识数据库用户和架构之间的任何差异。

权限

要求对数据库具有 CREATE ROLE 权限或者在 db_securityadmin 固定数据库角色中具有成员身份。 使用 AUTHORIZATION 选项时,还需要具有下列权限

  • 若要将角色的所有权分配给另一个用户,则需要对该用户具有 IMPERSONATE 权限。

  • 若要将角色的所有权分配给另一个角色,则需要具有被分配角色的成员身份或对该角色具有 ALTER 权限。

  • 若要将角色的所有权分配给应用程序角色,则需要对该应用程序角色具有 ALTER 权限。

示例

以下示例全部使用 AdventureWorks 数据库。

答: 创建由数据库用户拥有的数据库角色

以下示例将创建用户 buyers 拥有的数据库角色 BenMiller

CREATE ROLE buyers AUTHORIZATION BenMiller;  
GO  

B. 创建由固定数据库角色拥有的数据库角色

以下示例将创建 auditors 固定数据库角色拥有的数据库角色 db_securityadmin

CREATE ROLE auditors AUTHORIZATION db_securityadmin;  
GO  

另请参阅

主体(数据库引擎)
ALTER ROLE (Transact-SQL)
DROP ROLE (Transact-SQL)
EVENTDATA (Transact-SQL)
sp_addrolemember(Transact-SQL)
sys.database_role_members(Transact-SQL)
sys.database_principals(Transact-SQL)
数据库引擎权限入门