【发布时间】:2017-05-18 01:42:00
【问题描述】:
我正在使用以下 T-SQL 从我的 SQL Server 2008 R2 数据库中获取角色成员:
select rp.name as database_role, mp.name as database_user
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)
order by rp.name
当我检查输出时,我注意到为 db_datareader 列出的唯一角色成员是 db 角色 - 查询中没有列出 db_datareader 的用户成员。
这是为什么呢?我怎样才能列出我的数据库角色的用户成员?
我想我还应该问一下sys.database_role_members 表是否实际上包含一个角色的所有成员?
【问题讨论】:
-
@Mihai - 您提供的链接中发布的代码与我的问题中发布的代码相同,只是它对服务器的每个数据库都执行此操作并且不回答我的问题。