16.4 SQL Server删除角色
SQL Server删除角色
简介
语法:
| DROP ROLE [IF EXISTS] role_name; |
DROP ROLE无法删除拥有安全资源的角色。要删除拥有安全资源的角色,需要首先转移这些安全资源的所有权,然后从数据库中删除该角色。
DROP ROLE语句无法删除具有成员的角色。若要删除具有成员的角色,需要先从角色中删除成员,然后再将其删除。
DROP ROLE语句无法删除系统自带固定数据库角色,如db_datareader、db_datawriter、db_securityadmin等。
示例
1)DROP ROLE简单示例
删除角色sox_auditors:
| DROP ROLE IF EXISTS sox_auditors; |
角色sox_auditors没有成员,所以执行成功。
2)DROP ROLE删除具有成员的角色
首先,使用DROP ROLE语句从数据库中删除角色sales:
| DROP ROLE sales; |
由于角色sales有成员,SQL Server会出现以下错误:
| The role has members. It must be empty before it can be dropped. |
所以,要查找属于sales角色的成员,请使用以下语句:
| SELECT | |
| r.name role_name, | |
| r.type role_type, | |
| r.type_desc role_type_desc, | |
| m.name member_name, | |
| m.type member_type, | |
| m.type_desc member_type_desc | |
| FROM sys.database_principals r | |
| INNER JOIN sys.database_role_members rm on rm.role_principal_id = r.principal_id | |
| INNER JOIN sys.database_principals m on m.principal_id = rm.member_principal_id | |
| WHERE r.name ='sales'; |

输出显示角色sales有一个成员,即用户james。
第三步,使用ALTER ROLE… DROP MEMBER语句从角色销售中删除用户james:
| ALTER ROLE sales | |
| DROP MEMBER james; |
第四步,再次使用DROP ROLE语句删除角色sales:
| DROP ROLE sales; |
分类: SQL Server
漫思
浙公网安备 33010602011771号