CREATE ROLE (Transact-SQL)
适用于:SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics Analytics Platform System (PDW) Microsoft Fabric 中的 SQL 终结点 Microsoft Fabric 中的仓库 Microsoft Fabric 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。
注意
从 SQL Server 2005 开始,架构的行为发生了更改。 因此,假设架构与数据库用户等价的代码不再返回正确的结果。 包含 sysobjects 的旧目录视图不应在曾经使用任何下列 DDL 语句的数据库中使用:CREATE SCHEMA、ALTER SCHEMA、DROP SCHEMA、CREATE USER、ALTER USER、DROP USER、CREATE ROLE、ALTER ROLE、DROP ROLE、CREATE APPROLE、ALTER APPROLE、DROP APPROLE、ALTER AUTHORIZATION。 在这类数据库中,必须改用新目录视图。 新的目录视图将采用在 SQL Server 2005 中引入的使主体和架构分离的方法。 有关目录视图的详细信息,请参阅目录视图 (Transact-SQL)。
权限
要求对数据库具有 CREATE ROLE 权限或者在 db_securityadmin 固定数据库角色中具有成员身份。 使用 AUTHORIZATION 选项时,还需要具有下列权限:
若要将角色的所有权分配给另一个用户,则需要对该用户具有 IMPERSONATE 权限。
若要将角色的所有权分配给另一个角色,则需要具有被分配角色的成员身份或对该角色具有 ALTER 权限。
若要将角色的所有权分配给应用程序角色,则需要对该应用程序角色具有 ALTER 权限。
示例
以下示例全部使用 AdventureWorks 数据库。
A. 创建由数据库用户拥有的数据库角色
以下示例将创建用户 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)
数据库引擎权限入门