ALTER SERVER ROLE (Transact-SQL)

Изменяет членство в роли сервера или изменяет имя определяемой пользователем роли сервера. Предопределенные роли сервера нельзя переименовывать.

Применимо для следующих объектов: SQL Server (начиная с SQL Server 2012 до текущей версии).

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

Синтаксис

ALTER SERVER ROLE server_role_name 
{
    [ ADD MEMBER server_principal ]
  | [ DROP MEMBER server_principal ]
  | [ WITH NAME = new_server_role_name ]
} [ ; ]

Аргументы

  • server_role_name
    Имя роли сервера, подлежащей изменению.

  • ADD MEMBER server_principal
    Добавляет указанный сервер-участник к роли сервера. Аргумент server_principal может быть именем входа или определяемой пользователем ролью сервера. Аргумент server_principal не может быть предопределенной ролью сервера, ролью базы данных или sa.

  • DROP MEMBER server_principal
    Удаляет указанный сервер-участник из роли сервера. Аргумент server_principal может быть именем входа или определяемой пользователем ролью сервера. Аргумент server_principal не может быть предопределенной ролью сервера, ролью базы данных или sa.

  • WITH NAME **=**new_server_role_name
    Задает новое имя определяемой пользователем роли сервера. Это имя не должно быть занято на сервере.

Замечания

Изменение имени определяемой пользователем роли сервера не изменяет идентификационный номер, владельца или разрешения роли.

Для изменения роли базы данных инструкция ALTER SERVER ROLE заменяет sp_addsrvrolemember и sp_dropsrvrolemember. Эти хранимые процедуры являются устаревшими.

Для просмотра ролей сервера выполните запрос к представлениям каталога sys.server_role_members и sys.server_principals.

Чтобы изменить владельца определяемой пользователем роли сервера, воспользуйтесь инструкцией ALTER AUTHORIZATION (Transact-SQL).

Разрешения

Требует разрешения ALTER ANY SERVER ROLE на сервере для изменения имени определяемой пользователем роли сервера.

Предопределенные роли сервера

Для добавления нового члена в предопределенную роль сервера пользователь должен быть членом этой предопределенной роли сервера или членом роли сервера sysadmin.

Примечание

Разрешения CONTROL SERVER и ALTER ANY SERVER ROLE недостаточны для выполнения инструкции ALTER SERVER ROLE с предопределенной ролью сервера, а разрешение ALTER не может быть предоставлено для предопределенной роли сервера.

Определяемые пользователем роли сервера

Для добавления члена в определяемую пользователем роль сервера пользователь должен быть членом предопределенной роли сервера sysadmin или иметь разрешение CONTROL SERVER или ALTER ANY SERVER ROLE. Либо иметь разрешение ALTER для этой роли.

Примечание

В отличие от предопределенных ролей сервера, члены определяемой пользователем роли по сути не имеют разрешения на добавление членов в эту роль.

Примеры

А.Изменение имени роли сервера

В следующем примере создается роль сервера с именем Product, затем имя роли сервера изменяется на Production.

CREATE SERVER ROLE Product ;
ALTER SERVER ROLE Product WITH NAME = Production ;
GO

Б.Добавление учетной записи домена к роли сервера

В следующем примере к определяемой пользователем роли сервера с именем Production добавляется учетная запись домена с именем adventure-works\roberto0.

ALTER SERVER ROLE Production ADD MEMBER [adventure-works\roberto0] ;

В.Добавление имени входа SQL Server к роли сервера

В следующем примере к предопределенной роли сервера diskadmin добавляется имя входа SQL Server Ted.

ALTER SERVER ROLE diskadmin ADD MEMBER Ted ;
GO

Г.Удаление учетной записи домена из роли сервера

В следующем примере учетная запись домена с именем adventure-works\roberto0 удаляется из определяемой пользователем роли сервера с именем Production.

ALTER SERVER ROLE Production DROP MEMBER [adventure-works\roberto0] ;

Д.Удаление имени входа SQL Server из роли сервера

В следующем примере имя входа SQL Server Ted удаляется из предопределенной роли сервера diskadmin.

ALTER SERVER ROLE Production DROP MEMBER Ted ;
GO

Е.Предоставление имени входа разрешения на добавление имен входа к определяемой пользователем роли сервера

В следующем примере пользователь Ted получает разрешение добавлять другие имена входа к определяемой пользователем роли сервера с именем Production.

GRANT ALTER ON SERVER ROLE::Production TO Ted ;
GO

Ж.Просмотр членства в роли

Чтобы просмотреть членство в роли, воспользуйтесь страницей Роль сервера (Члены) в среде Среда SQL Server Management Studio или выполните следующий запрос:

SELECT SRM.role_principal_id, SP.name AS Role_Name, 
SRM.member_principal_id, SP2.name  AS Member_Name
FROM sys.server_role_members AS SRM
JOIN sys.server_principals AS SP
    ON SRM.Role_principal_id = SP.principal_id
JOIN sys.server_principals AS SP2 
    ON SRM.member_principal_id = SP2.principal_id
ORDER BY  SP.name,  SP2.name

См. также

Справочник

CREATE SERVER ROLE (Transact-SQL)

DROP SERVER ROLE (Transact-SQL)

CREATE ROLE (Transact-SQL)

ALTER ROLE (Transact-SQL)

DROP ROLE (Transact-SQL)

Хранимые процедуры безопасности (Transact-SQL)

Функции безопасности (Transact-SQL)

sys.server_role_members (Transact-SQL)

sys.server_principals (Transact-SQL)

Основные понятия

Участники (компонент Database Engine)