ALTER SERVER ROLE (Transact-SQL)
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure платформенная система аналитики (PDW)
Изменяет членство в роли сервера или изменяет имя определяемой пользователем роли сервера. Предопределенные роли сервера нельзя переименовывать.
Соглашения о синтаксисе Transact-SQL
Синтаксис
-- Syntax for SQL Server, Azure SQL Database, Azure SQL Managed Instance
ALTER SERVER ROLE server_role_name
{
[ ADD MEMBER server_principal ]
| [ DROP MEMBER server_principal ]
| [ WITH NAME = new_server_role_name ]
} [ ; ]
-- Syntax for Parallel Data Warehouse
ALTER SERVER ROLE server_role_name ADD MEMBER login;
ALTER SERVER ROLE server_role_name DROP MEMBER login;
Аргументы
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
replaces sp_addsrvrolemember и sp_dropsrvrolemember. Эти хранимые процедуры являются устаревшими.
Для просмотра ролей сервера выполните запрос к представлениям каталога sys.server_role_members
и sys.server_principals
.
Чтобы изменить владельца определяемой пользователем роли сервера, воспользуйтесь инструкцией ALTER AUTHORIZATION (Transact-SQL).
В База данных SQL Azure ALTER SERVER ROLE
необходимо запустить в master
базе данных.
Разрешения
Требует разрешения 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
B. Добавление учетной записи домена в роль сервера
В следующем примере к определяемой пользователем роли сервера с именем Production
добавляется учетная запись домена с именем adventure-works\roberto0
.
ALTER SERVER ROLE Production ADD MEMBER [adventure-works\roberto0] ;
C. Добавление имени входа SQL Server в роль сервера
В следующем примере добавляется имя входа SQL Server с именем Ted
фиксированной diskadmin
роли сервера.
ALTER SERVER ROLE diskadmin ADD MEMBER Ted ;
GO
D. Удаление учетной записи домена из роли сервера
В следующем примере учетная запись домена с именем adventure-works\roberto0
удаляется из определяемой пользователем роли сервера с именем Production
.
ALTER SERVER ROLE Production DROP MEMBER [adventure-works\roberto0] ;
Е. Удаление имени входа SQL Server из роли сервера
В следующем примере удаляется имя входа Ted
SQL Server из diskadmin
предопределенных ролей сервера.
ALTER SERVER ROLE Production DROP MEMBER Ted ;
GO
F. Предоставьте пользователю разрешение на добавление имен входа в определяемую пользователем роль сервера.
В следующем примере пользователь Ted
получает разрешение добавлять другие имена входа к определяемой пользователем роли сервера с именем Production
.
GRANT ALTER ON SERVER ROLE::Production TO Ted ;
GO
G. Просмотр членства в роли
Чтобы просмотреть членство в роли, воспользуйтесь страницей Роль сервера (Члены) в среде 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
Примеры: система платформы аналитики (PDW)
H. Добавление члена в роль сервера
В следующем примере к роли сервера LargeRC
добавляется имя входа Anna
.
ALTER SERVER ROLE LargeRC ADD MEMBER Anna;
I. Удаление имени входа из класса ресурсов
В следующем примере удаляется членство Анны из роли сервера LargeRC
.
ALTER SERVER ROLE LargeRC DROP MEMBER Anna;
Следующие шаги
- 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)