Поделиться через


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

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

Разрешения

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

  • Членство в предопределенной роли базы данных db_securityadmin или db_owner.

  • Членство в роли, которой принадлежит эта роль.

  • Разрешение ALTER ANY ROLE или ALTER на эту роль.

Для добавления членов в предопределенную роль базы данных необходимо быть членом предопределенной роли базы данных db_owner.

Примеры

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

В следующем примере в базу данных AdventureWorks2008R2 добавляется имя входа Windows Contoso\Mary5 в качестве пользователя Mary5. Затем пользователь Mary5 добавляется к роли Production.

ПримечаниеПримечание

Так как Contoso\Mary5 известен как пользователь Mary5 базы данных База данных AdventureWorks2008R2, должно указываться имя пользователя Mary5. Выполнение инструкции приведет к ошибке, если не существует имени входа Contoso\Mary5. Можно проверить, используя имя входа в домене.

USE AdventureWorks2008R2;
GO
CREATE USER Mary5 FOR LOGIN [Contoso\Mary5] ;
GO
EXEC sp_addrolemember 'Production', 'Mary5'

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

В следующем примере пользователь базы данных Mary5 добавляется к роли базы данных Production текущей базы данных.

EXEC sp_addrolemember 'Production', 'Mary5'