sp_addrolemember (Transact-SQL)

为当前数据库中的数据库角色添加数据库用户、数据库角色、Windows 登录或 Windows 组。

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

语法

sp_addrolemember [ @rolename = ] 'role',
    [ @membername = ] 'security_account'

参数

  • [ @rolename = ] 'role'
    当前数据库中的数据库角色的名称。role 数据类型为 sysname,无默认值。
  • [ @membername = ] 'security_account'
    是添加到该角色的安全帐户。security_account 数据类型为 sysname,无默认值。 security_account 可以是数据库用户、数据库角色、Windows 登录或 Windows 组。

返回代码值

0(成功)或 1(失败)

备注

使用 sp_addrolemember 添加到角色中的成员会继承该角色的权限。 如果新成员是没有相应数据库用户的 Windows 级别的主体,则将创建一个数据库用户。

角色不能将自身包含为成员。 即使这种成员关系仅由一个或多个中间成员身份间接地体现,这种“循环”定义也无效。

sp_addrolemember 不能将固定数据库角色、固定服务器角色或 dbo 添加到某角色中。 在 SQL Server Serivce Pack 1 之前,不能在用户定义的事务内执行 sp_addrolemember

只能使用 sp_addrolemember 将向数据库角色添加成员。 若要向服务器角色添加成员,请使用 sp_addsrvrolemember (Transact-SQL)

请不要将灵活的角色添加为固定角色的成员。 这可能会启用意外的权限升级。

权限

将成员添加到灵活的数据库角色需要具备以下条件之一:

  • 具有 db_owner 固定数据库角色的成员身份。
  • 具有 db_securityadmin 固定数据库角色的成员身份。
  • 具有拥有该角色权限的角色的成员身份。
  • 对该角色拥有 ALTER 权限。

将成员添加到固定数据库角色中需要具有 db_owner 固定数据库角色的成员身份。

示例

A.添加 Windows 登录

以下示例将 Windows 登录名 Contoso\Mary5

作为用户 Mary5 添加到 AdventureWorks 数据库中。 然后,用户 Mary5 便添加到 Production 角色中。

ms187750.note(zh-cn,SQL.90).gif注意:
因为在 AdventureWorks 数据库中,Contoso\Mary5 称为数据库用户 Mary5,所以必须使用 sp_addrolemember 指定用户名 Mary5
USE AdventureWorks
GO
EXEC sp_grantdbaccess 'Contoso\Mary5', 'Mary5'
GO
EXEC sp_addrolemember 'Production', 'Mary5'

B.添加数据库用户

以下示例将数据库用户 Mary5 添加到当前数据库的 Production 数据库角色中。

EXEC sp_addrolemember 'Production', 'Mary5'

请参阅

参考

安全存储过程 (Transact-SQL)
sp_addsrvrolemember (Transact-SQL)
sp_droprolemember (Transact-SQL)
sp_grantdbaccess (Transact-SQL)
系统存储过程 (Transact-SQL)

帮助和信息

获取 SQL Server 2005 帮助