Хранимая процедура 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 с пакетом обновления 1 (SP1) хранимая процедура sp_addrolemember не может выполняться в пользовательской транзакции.

Процедура sp_addrolemember используется только для добавления нового члена к роли базы данных. Чтобы добавить новый член к серверной роли, воспользуйтесь процедурой sp_addsrvrolemember (Transact-SQL).

Не добавляйте гибкие роли в качестве членов фиксированных ролей. Это может вызвать непредусмотренное повышение прав доступа.

Разрешения

Для добавления членов к гибким ролям базы данных требуется одно из следующих условий:

  • членство в фиксированной роли базы данных db_owner;
  • членство в фиксированной роли базы данных db_securityadmin;
  • членство в роли владельца;
  • разрешение ALTER на эту роль.

Для добавления членов к фиксированным ролям базы данных требуется членство в фиксированной роли базы данных db_owner.

Примеры

A. Добавление имени входа Windows

Следующий пример добавляет имя входа Windows Contoso\Mary5.

к базе данных AdventureWorks в качестве пользователя Mary5. После этого пользователь Mary5 добавляется к роли Production role.

ms187750.note(ru-ru,SQL.90).gifПримечание.
Так как Contoso\Mary5 известен как пользователь Mary5 базы данных AdventureWorks, с помощью процедуры sp_addrolemember должно указываться имя пользователя Mary5.
USE AdventureWorks
GO
EXEC sp_grantdbaccess 'Contoso\Mary5', 'Mary5'
GO
EXEC sp_addrolemember 'Production', 'Mary5'

Б. Добавление пользователя базы данных

В следующем примере пользователь базы данных 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