Хранимая процедура sp_addrolemember (Transact-SQL)
Добавляет пользователя базы данных, роль базы данных, имя входа Windows или группу Windows к роли текущей базы данных.
Синтаксис
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'