Хранимая процедура Хранимая процедура sp_addrolemember (Transact-SQL)

Применимо к:SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure Azure Synapse Analytics AnalyticsPlatform 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 (Transact-SQL).

Разрешения

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

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

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

  • ALTER ANY ROLE разрешение или ALTER разрешение на роль.

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

Примеры

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

В следующем примере в базу данных в качестве пользователя Mary5добавляется имя входа Contoso\Mary5AdventureWorks2022 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)

C. Добавление имени входа 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'