You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server 2022中普通角色成员查看同角色成员的实现方法

SQL Server 2022 普通角色成员查看同数据库其他角色成员的方法

在SQL Server 2022中,虽然sp_getrolemember已被移除,但普通数据库角色成员可以通过查询系统视图组合实现查看同数据库内其他角色成员的需求,且无需额外赋予权限。

核心查询语句

使用sys.database_role_members和sys.database_principals两个系统视图关联查询,这两个视图的读取权限默认对所有数据库用户开放:

SELECT
    dp_role.name AS 角色名称,
    dp_member.name AS 成员名称,
    dp_member.type_desc AS 成员类型
FROM
    sys.database_role_members drm
JOIN
    sys.database_principals dp_role ON drm.role_principal_id = dp_role.principal_id
JOIN
    sys.database_principals dp_member ON drm.member_principal_id = dp_member.principal_id
ORDER BY
    dp_role.name, dp_member.name;

关键说明

  • sys.database_role_members存储数据库角色与成员的关联关系,包含角色和成员的principal_id
  • sys.database_principals存储数据库内所有主体(角色、用户、应用程序角色等)的详细信息,通过关联两个视图可获取完整的角色成员信息
  • 普通角色成员默认拥有这两个视图的SELECT权限,无需额外授权即可执行查询

对之前尝试问题的补充

如果之前创建视图未生效,大概率是视图依赖了需要更高权限的系统对象(如部分系统目录视图需要VIEW DEFINITION权限),而上述两个视图是普通用户默认可访问的,因此不会出现权限问题。

内容的提问来源于stack exchange,提问作者user763539

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 04:45:54