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


РОЛЬ ДРОП-СЕРВЕРА (Transact-SQL)

Область применения: SQL Server Управляемый экземпляр SQL Azure Azure Synapse Analytics AnalyticsPlatform System (PDW)

Удаляет определяемую пользователем роль сервера.

Пользовательские серверные роли были введены в SQL Server 2012 (11.x).

Соглашения о синтаксисе Transact-SQL

Синтаксис

DROP SERVER ROLE role_name
[ ; ]

Аргументы

role_name

Задает определяемую пользователем роль сервера для удаления с сервера.

Замечания

Пользовательские серверные роли, владеющие защищёнными файлами, не могут быть удалены с сервера. Чтобы удалить определяемую пользователем роль сервера, владеющую защищаемыми объектами, необходимо сначала передать эти объекты другому владельцу или удалить их.

Пользовательские серверные роли с участниками нельзя убрать. Для удаления определяемой пользователем роли сервера с членами необходимо сначала удалить члены из роли с помощью инструкции ALTER SERVER ROLE.

Фиксированные роли серверов нельзя удалить.

Можно просмотреть сведения о членстве в роли путем запроса к представлению каталога sys.server_role_members.

Разрешения

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

Примеры

А. Удаление роли сервера

В следующем примере удаляется роль сервера purchasing.

DROP SERVER ROLE purchasing;
GO

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

Чтобы просмотреть членство в ролях, используйте страницу Server Role (Members) в 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
     INNER JOIN sys.server_principals AS SP
         ON SRM.Role_principal_id = SP.principal_id
     INNER JOIN sys.server_principals AS SP2
         ON SRM.member_principal_id = SP2.principal_id
ORDER BY SP.name, SP2.name;

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

Чтобы определить, принадлежит ли роли сервера другая роль сервера, выполните следующий запрос:

SELECT SP1.name AS RoleOwner,
       SP2.name AS Server_Role
FROM sys.server_principals AS SP1
     INNER JOIN sys.server_principals AS SP2
         ON SP1.principal_id = SP2.owning_principal_id
ORDER BY SP1.name;