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


Хранимая процедура 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_owner.

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

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

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

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

Примеры

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

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

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

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

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

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

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

EXEC sp_addrolemember 'Production', 'Mary5'