Sql server 确定有效的MSSQL数据库角色成员身份

Sql server 确定有效的MSSQL数据库角色成员身份,sql-server,windows-authentication,Sql Server,Windows Authentication,我已经创建了windows用户组,并将这些组作为登录名添加到MSSQL 2008 R2实例中。这些组分配了不同的数据库角色。现在,我想确定什么是适用于作为windows组一部分的用户x的有效角色 方法是什么?如果您知道用户所在的Windows组,可以在要检查的数据库中使用此方法: select p1.name as role, p2.name as member from sys.database_role_members m inner join sys.database_principals

我已经创建了windows用户组,并将这些组作为登录名添加到MSSQL 2008 R2实例中。这些组分配了不同的数据库角色。现在,我想确定什么是适用于作为windows组一部分的用户x的有效角色


方法是什么?

如果您知道用户所在的Windows组,可以在要检查的数据库中使用此方法:

select p1.name as role, p2.name as member
from sys.database_role_members m
inner join sys.database_principals p1 on m.role_principal_id = p1.principal_id
inner join sys.database_principals p2 on m.member_principal_id = p2.principal_id
order by 1, 2
如果您不这样做,您可以这样做:

-- Impersonate the user
execute as login = '<YourDomain\YourUser>'

-- Check membership
select name as role
from sys.database_principals
where type = 'R' and is_member(name) = 1

-- When ready, revert out of impersonation
revert

谢谢。此查询向我显示分配给特定用户的固定角色。我想找出已分配给特定用户的用户定义的数据库角色。它应该向您显示这两个角色。您是否已将上下文更改为正确的数据库,即使用SSMS中的use语句或数据库下拉列表?谢谢Mahmud。我发现了错误。但现在我的问题是,除非某个特定的用户作为登录名直接添加到sql server,否则它不会显示角色成员身份。我想看看有效权限之类的东西,这就是sql的第二个功能块。您可以有效地模拟要检查权限的用户,然后检查权限。