Хранимая процедура Хранимая процедура sp_addrolemember (Transact-SQL)
Применимо: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure azure Synapse Analytics Analytics Platform System (PDW)
Добавляет пользователя базы данных, роль базы данных, имя входа Windows или группу Windows к роли текущей базы данных.
Внимание
Эта функция будет удалена в будущей версии SQL Server. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется. Вместо этого используйте ALTER ROLE .
Соглашения о синтаксисе Transact-SQL
Синтаксис
sp_addrolemember
[ @rolename = ] N'rolename'
, [ @membername = ] N'membername'
[ ; ]
Примечание.
Этот синтаксис не поддерживается бессерверным пулом SQL в Azure Synapse Analytics.
Аргументы
[ @rolename = ] N'rolename'
Имя роли базы данных в текущей базе данных. @rolename — sysname без значения по умолчанию.
[ @membername = ] N'membername'
Учетная запись безопасности, добавляемая в роль. @membername — sysname без значения по умолчанию. @membername может быть пользователем базы данных, ролью базы данных, именем входа Windows или группой Windows.
Значения кода возврата
0
(успешно) или 1
(сбой).
Замечания
Участник, добавленный в роль, с помощью sp_addrolemember
наследует разрешения роли. Если новый член является субъектом уровня Windows без соответствующего пользователя базы данных, создается пользователь базы данных, но может быть не полностью сопоставлен с именем входа. Всегда проверяйте, существует ли имя входа, и предоставлен ли ему доступ к базе данных.
Роль не может включать себя в качестве члена. Такие циклические определения недопустимы, даже если членство косвенно подразумевается одним или несколькими промежуточными членствами.
sp_addrolemember
Не удается добавить предопределенных ролей базы данных, предопределенных ролей сервера или dbo в роль.
Используется sp_addrolemember
только для добавления члена в роль базы данных. Чтобы добавить члена в роль сервера, используйте sp_addsrvrolemember.
Разрешения
Для добавления участников в гибкие роли базы данных требуется одно из следующих разрешений:
Членство в предопределенных ролевой роли базы данных db_securityadmin или db_owner .
Членство в роли, которой принадлежит эта роль.
ALTER ANY ROLE
разрешение илиALTER
разрешение на роль.
Добавление участников в фиксированные роли базы данных требует членства в предопределенных ролях базы данных db_owner .
Примеры
А. Добавление имени входа Windows
В следующем примере в базу данных в качестве пользователя Mary5
добавляется имя входа Contoso\Mary5
AdventureWorks2022
Windows. Затем пользователь Mary5
добавляется к роли Production
.
Так как Contoso\Mary5
известен как пользователь базы данных Mary5
в базе данных AdventureWorks2022
, имя пользователя Mary5
должно быть определено. Инструкция завершается ошибкой Contoso\Mary5
, если имя входа не существует. Можно проверить, используя имя входа в домене.
USE AdventureWorks2022;
GO
CREATE USER Mary5 FOR LOGIN [Contoso\Mary5];
GO
B. Добавление пользователя базы данных
В следующем примере пользователь базы данных Mary5
добавляется к роли базы данных Production
текущей базы данных.
EXEC sp_addrolemember 'Production', 'Mary5';
Примеры: система платформы аналитики (PDW)
В. Добавление имени входа Windows
В следующем примере имя входа LoginMary
добавляется в AdventureWorks2022
базу данных в качестве пользователя UserMary
. Затем пользователь UserMary
добавляется к роли Production
.
Примечание.
Так как имя входа LoginMary
называется пользователем UserMary
базы данных в AdventureWorks2022
базе данных, необходимо указать имя UserMary
пользователя. Выражение будет завершаться с ошибкой Mary5
, пока существует имя для входа. Имена входа и пользователи обычно имеют одинаковое имя. В этом примере используются разные имена, чтобы различать действия, влияющие на имя входа и пользователя.
-- Uses AdventureWorks2022
CREATE USER UserMary FOR LOGIN LoginMary;
GO
EXEC sp_addrolemember 'Production', 'UserMary'
D. Добавление пользователя базы данных
В следующем примере пользователь базы данных UserMary
добавляется к роли базы данных Production
текущей базы данных.
EXEC sp_addrolemember 'Production', 'UserMary'