SQL Server用户角色,其中包含角色

时间:2014-05-27 07:13:51

标签: sql sql-server tsql roles members

我知道标题可能有点令人困惑,但这是我能想到的最好的。 所以这是我的问题:我有一个拥有多个角色的数据库,其中一些角色作为角色成员具有其他角色,因此当用户添加到角色时,它也会自动将该用户添加到其他角色。

对于我的数据库中的exameple,如果我运行SQL:

exec sp_helprolemember op_ConfigDefault - 这将为我提供op_ConfigDefault角色的所有成员。在这些角色中,一些成员具有实际作用。我做了一些打印屏幕更清晰 enter image description here

在蓝色squere中,我有成员是角色,红色正方形是普通用户。

enter image description here

在这里你可以看到上面的那些“成员”确实是角色。

我现在的问题是,有没有办法构建一个T-SQL,所以我只能从角色中获得角色的成员?

1 个答案:

答案 0 :(得分:3)

我成功找到了解决方案

SELECT DbRole = g.NAME,
    MemberName = u.NAME,
    MemberSID = u.sid
FROM sys.database_principals u,
    sys.database_principals g,
    sys.database_role_members m
WHERE g.NAME = /* add role name here*/
    AND g.principal_id = m.role_principal_id
    AND u.principal_id = m.member_principal_id
    AND u.NAME IN (
        SELECT NAME
        FROM sys.database_principals
        WHERE type = 'R'
        )
ORDER BY 1, 2