Sql 有没有一种简单的方法可以删除角色中的所有成员

Sql 有没有一种简单的方法可以删除角色中的所有成员,sql,sql-server,Sql,Sql Server,我的数据库中有一个名为OrderEntry的用户定义角色,该角色只有两个成员。把他们一个接一个地丢掉这个角色并不是什么大不了的事。但是,如果出现需要放弃某个角色并且需要首先从该角色中删除所有成员的情况,我可以认为这是一个问题。有没有一个简单的方法可以做到这一点,以供将来参考。我在考虑SQL脚本 select 'ALTER ROLE ' + QUOTENAME(rp.name) + ' DROP MEMBER ' + QUOTENAME(mp.name) from sys.database_r

我的数据库中有一个名为OrderEntry的用户定义角色,该角色只有两个成员。把他们一个接一个地丢掉这个角色并不是什么大不了的事。但是,如果出现需要放弃某个角色并且需要首先从该角色中删除所有成员的情况,我可以认为这是一个问题。有没有一个简单的方法可以做到这一点,以供将来参考。我在考虑SQL脚本

select 'ALTER ROLE ' +  QUOTENAME(rp.name)  + ' DROP MEMBER ' + QUOTENAME(mp.name)
from sys.database_role_members drm
  join sys.database_principals rp on (drm.role_principal_id = rp.principal_id)
  join sys.database_principals mp on (drm.member_principal_id = mp.principal_id)
WHERE rp.name = 'OrderEntery '
order by rp.name
您可以像这样创建所有ALTER ROLE DROP成员语法。获取结果查询并运行它

结果应该是这样的

ALTER ROLE [OrderEntery ] DROP MEMBER [user1]
ALTER ROLE [OrderEntery ] DROP MEMBER [user2]
ALTER ROLE [OrderEntery ] DROP MEMBER [user3]
ALTER ROLE [OrderEntery ] DROP MEMBER [user4]
编辑:

从msdn:

  • sys.database_role_members-为每个数据库的每个成员返回一行 数据库角色
  • sys.database_principals-为每个安全主体返回一行 在SQL Server数据库中

您的问题令人困惑,是否要删除该角色的行?或者您想删除这些用户的角色类型?根据我对删除角色的理解,您不需要再让成员担任该角色。在我的情况下,删除成员的方法是改变角色OrderEntry删除成员JohnDoe。然后,一旦成员被删除,我就可以删除角色drop role orderEntry。如果该角色中有多个成员,并且我想删除它们,是否有一种简单的方法可以删除所有成员,还是必须逐个删除所有成员?是否要删除同一角色的成员?我说的对吗?我想这就是我要问的,从tableName中删除角色OrderEntry不起作用的内容吗?这一点我现在有点不知所措。我会花一些时间来弄清楚它并没有那么复杂,基本上通过查询,您可以从一个特定的角色(使用where子句)获得所有用户。然后添加文本以创建一个
alter角色。。。drop member…
语法,这样您就可以为所需角色的每个成员获得ALTER drop。当然……我只是不知道sys.database\u role\u members的内容来自何方……我是新手。它们是SQL Server表,SQL在其中存储数据。您可能希望SQL Server将其所有数据存储在表中,这些表用于成员和角色。@secretTina查看编辑。希望能有帮助。