CREATE ROLE (Transact-SQL)
在当前数据库中创建新的数据库角色。
适用范围:SQL Server(SQL Server 2008 至当前版本),Windows Azure SQL Database(初始版本至当前版本)。 |
语法
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 目录视图中查看数据库角色。
备注
从 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 权限。
示例
A.创建由数据库用户拥有的数据库角色
以下示例将创建用户 BenMiller 拥有的数据库角色 buyers。
USE AdventureWorks2012;
CREATE ROLE buyers AUTHORIZATION BenMiller;
GO
B.创建由固定数据库角色拥有的数据库角色
以下示例将创建 db_securityadmin 固定数据库角色拥有的数据库角色 auditors。
USE AdventureWorks2012;
CREATE ROLE auditors AUTHORIZATION db_securityadmin;
GO
请参阅
参考
sp_addrolemember (Transact-SQL)
sys.database_role_members (Transact-SQL)
sys.database_principals (Transact-SQL)