CREATE ROLE (Transact-SQL)

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

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

语法

CREATE ROLE role_name [ AUTHORIZATION owner_name ]

参数

  • role_name
    待创建角色的名称。
  • AUTHORIZATION owner_name
    将拥有新角色的数据库用户或角色。如果未指定用户,则执行 CREATE ROLE 的用户将拥有该角色。

备注

角色是数据库级别的安全对象。创建角色后,使用 GRANT、DENY 和 REVOKE 配置角色的数据库级别权限。若要为数据库角色添加成员,请使用 sp_addrolemember 存储过程。有关详细信息,请参阅数据库级别的角色

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

ms187936.Caution(zh-cn,SQL.90).gif注意:
在 SQL Server 2005 中,架构的行为与早期版本的 SQL Server 中的行为不同。假设架构与数据库用户等价的代码不能返回正确的结果。在曾经使用过以下任何 DDL 语句的数据库中,不应当使用旧目录视图(包括 sysobjects):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 权限。使用 AUTHORIZATION 选项时,还需要具有下列权限:

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

示例

A. 创建由数据库用户拥有的数据库角色

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

USE AdventureWorks;
CREATE ROLE buyers AUTHORIZATION BenMiller;
GO

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

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

USE AdventureWorks;
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)

其他资源

主体

帮助和信息

获取 SQL Server 2005 帮助