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


sp_addrole (Transact-SQL)

Создает новую роль базы данных в текущей базе данных.

Важное примечаниеВажно!

Процедура sp_addrole доступна в целях совместимости с предыдущими версиями Microsoft SQL Server и может не поддерживаться в следующих выпусках. Вместо нее следует использовать инструкцию CREATE ROLE.

Значок ссылки на разделСинтаксические обозначения в Transact-SQL

Синтаксис

sp_addrole [ @rolename = ] 'role' [ , [ @ownername = ] 'owner' ] 

Аргументы

  • [ @rolename = ] 'role'
    Имя новой роли базы данных. Аргумент role имеет тип sysname и не имеет значения по умолчанию. Аргумент role должен быть допустимым идентификатором и не должен существовать в текущей базе данных.

  • [ @ownername =] 'owner'
    Владелец новой роли базы данных. Аргумент owner имеет тип sysname и по умолчанию имеет значение текущего пользователя, выполняющего процедуру. Аргумент owner должен быть пользователем базы данных или ролью базы данных в текущей базе данных.

Значения кодов возврата

0 (успешное завершение) или 1 (ошибка)

Замечания

Имена ролей базы данных SQL Server могут содержать от 1 до 128 символов, включая буквы, символы и цифры. Имя роли базы данных не должно содержать символ обратной косой черты (\), иметь значение NULL или являться пустой строкой ('').

После добавления роли базы данных добавьте в эту роль участников с помощью процедуры Хранимая процедура sp_addrolemember (Transact-SQL). При использовании инструкций GRANT, DENY или REVOKE для назначения разрешений роли базы данных члены данной роли наследуют эти разрешения, как если бы они были применены напрямую к их учетным записям.

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

Новые роли сервера создавать нельзя. Роли можно создавать только на уровне базы данных.

Процедуру sp_addrole нельзя применять в пользовательской транзакции.

Разрешения

Необходимо наличие разрешения CREATE ROLE в базе данных. При создании схемы необходимо наличие разрешения CREATE SCHEMA в этой базе данных. Если аргумент owner указан как пользователь или группа, то этому пользователю или группе необходимо разрешение IMPERSONATE. Если аргумент owner указан как роль, то для этой роли или члена этой роли необходимо разрешение ALTER. Если владелец указан как роль приложения, то для этой роли приложения необходимо разрешение ALTER.

Примеры

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

EXEC sp_addrole 'Managers'