sp_addrole (Transact-SQL)

适用于SQL Server

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

重要

sp_addrole 包含 是为了与早期版本的 SQL Server 兼容,在将来的版本中可能不受支持。 请改用 CREATE ROLE

Transact-SQL 语法约定

语法

sp_addrole
    [ @rolename = ] N'rolename'
    [ , [ @ownername = ] N'ownername' ]
[ ; ]

参数

[ @rolename = ] N'rolename'

新数据库角色的名称。 @rolenamesysname,无默认值。 @rolename 必须是有效的标识符,当前数据库中不得已存在。

[ @ownername = ] N'ownername'

新数据库角色的所有者。 @ownername为 sysname,默认为当前正在执行的用户。 @ownername 必须是当前数据库中的数据库用户或数据库角色。

返回代码值

0(成功)或 1(失败)。

注解

SQL Server 数据库角色的名称可以包含 1 到 128 个字符,包括字母、符号和数字。 数据库角色的名称不能包含反斜杠字符(\)、be NULL或空字符串('')。

添加数据库角色后,使用 sp_addrolemember (Transact-SQL) 将主体添加到角色。 使用或DENYREVOKE语句将权限应用于数据库角色时GRANT,数据库角色的成员将继承这些权限,就好像权限直接应用于其帐户一样。

注意

无法创建新的服务器角色。 只能在数据库级别上创建角色。

sp_addrole 不能在用户定义的事务中使用。

权限

需要对数据库拥有 CREATE ROLE 权限。 如果创建架构,则需要 CREATE SCHEMA 对数据库。 如果 @ownername 指定为用户或组,则需要 IMPERSONATE 该用户或组。 如果 @ownername 指定为角色,则需要 ALTER 对该角色或该角色的成员具有权限。 如果将所有者指定为应用程序角色,则需要 ALTER 对该应用程序角色具有权限。

示例

以下示例向当前数据库中添加名为 Managers 的新角色。

EXEC sp_addrole 'Managers';