Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Относится к:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Система аналитической платформы (PDW)
SQL база данных в Microsoft Fabric
Добавляет пользователя базы данных, роль базы данных, имя входа 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
В следующем примере в базу данных в качестве пользователя Contoso\Mary5добавляется имя входа AdventureWorks2025Mary5 Windows. Затем пользователь Mary5 добавляется к роли Production.
Так как Contoso\Mary5 известен как пользователь базы данных Mary5 в базе данных AdventureWorks2025 , имя пользователя Mary5 должно быть определено. Инструкция завершается ошибкой Contoso\Mary5 , если имя входа не существует. Можно проверить, используя имя входа в домене.
USE AdventureWorks2022;
GO
CREATE USER Mary5 FOR LOGIN [Contoso\Mary5];
GO
B. Добавление пользователя базы данных
В следующем примере пользователь базы данных Mary5 добавляется к роли базы данных Production текущей базы данных.
EXECUTE sp_addrolemember 'Production', 'Mary5';
Примеры: система платформы аналитики (PDW)
В. Добавление имени входа Windows
В следующем примере имя входа LoginMary добавляется в AdventureWorks2025 базу данных в качестве пользователя UserMary. Затем пользователь UserMary добавляется к роли Production.
Примечание.
Так как имя входа LoginMary называется пользователем UserMary базы данных в AdventureWorks2025 базе данных, необходимо указать имя UserMary пользователя. Выражение будет завершаться с ошибкой Mary5 , пока существует имя для входа. Имена входа и пользователи обычно имеют одинаковое имя. В этом примере используются разные имена, чтобы различать действия, влияющие на имя входа и пользователя.
-- Uses AdventureWorks2022
CREATE USER UserMary FOR LOGIN LoginMary;
GO
EXECUTE sp_addrolemember 'Production', 'UserMary';
D. Добавление пользователя базы данных
В следующем примере пользователь базы данных UserMary добавляется к роли базы данных Production текущей базы данных.
EXECUTE sp_addrolemember 'Production', 'UserMary';