具有内部角色的SQL Server用户角色
我知道标题可能有点混乱,但那是我能想到的最好的。 所以我的问题是:我有一个数据库,它有许多角色,其中一些角色作为角色成员有其他角色,所以当一个用户被添加到一个角色中时,它也会自动将该用户添加到其他角色中 例如,在我的数据库中,如果我运行SQL:具有内部角色的SQL Server用户角色,sql,sql-server,tsql,roles,members,Sql,Sql Server,Tsql,Roles,Members,我知道标题可能有点混乱,但那是我能想到的最好的。 所以我的问题是:我有一个数据库,它有许多角色,其中一些角色作为角色成员有其他角色,所以当一个用户被添加到一个角色中时,它也会自动将该用户添加到其他角色中 例如,在我的数据库中,如果我运行SQL: exec sp_helprolember op_ConfigDefault——这将为我提供op_ConfigDefault角色的所有成员。在这些角色中,一些成员是真正的角色。我做了一些打印屏幕以使其更清晰 在蓝色的squere中,我的成员是角色,在红场
exec sp_helprolember op_ConfigDefault
——这将为我提供op_ConfigDefault角色的所有成员。在这些角色中,一些成员是真正的角色。我做了一些打印屏幕以使其更清晰
在蓝色的squere中,我的成员是角色,在红场中是普通用户
在这里你可以看到上面的“成员”实际上是角色
我现在的问题是,有没有一种方法可以构建一个T-SQL,这样我就只能从一个角色中获取同样是角色的成员?我已经设法找到了解决方案
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