DROP 服务器角色(Transact-SQL)

适用于:SQL Server Azure SQL 托管实例 Azure Synapse Analytics Analytics平台系统(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 权限。

示例

A. 删除服务器角色

以下示例删除服务器角色 purchasing

DROP SERVER ROLE purchasing;
GO

B. 查看角色成员身份

要查看角色成员身份,请使用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;

C. 查看角色成员身份

若要确定服务器角色是否拥有其他服务器角色,请执行以下查询:

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;