我创建了 windows 用户组并将这些组添加为 MSSQL 2008 R2 实例的登录名。这些组分配了不同的数据库角色。现在我想确定适用于属于其中一个 windows 组的用户 (x) 的有效角色是什么。
方法是什么?
我创建了 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