我创建了一个名为“MYDOMAIN\Domain Users”的登录名和数据库用户。我需要找到登录的域用户具有哪些角色,但所有获取当前用户的调用都返回域用户名,例如。 “MYDOMAIN\username”不是数据库用户名,例如。 “MYDOMAIN\域用户”。
例如,此查询返回“MYDOMAIN\用户名”
select original_login(),suser_name(), suser_sname(), system_user, session_user, current_user, user_name()
并且这个查询返回0
select USER_ID()
我想要用户名来查询database_role_members是否有任何函数可以返回它或者我可以通过任何其他方式获取当前用户角色?
我知道域用户登录已映射到 AD 组?
您必须记住,用户可以位于多个 AD 组中,并且每个组都可以以某种方式映射到数据库中,这可能有点混乱。这也意味着您需要具有多种结果的东西:)
尝试这个:
select * from sys.server_principals where type_desc = 'WINDOWS_GROUP' and is_member(name) = 1
我认为它应该正确获取与特定用户绑定的所有 Windows 组登录信息。之后,您可以为数据库用户加入它,即:
Select u.name from YourDB.sys.syslogins l
inner join YourDB.sys.sysusers u
on l.sid = u.sid
where l.loginname = ANY (select * from sys.server_principals where type_desc = 'WINDOWS_GROUP' and is_member(name) = 1)
您必须始终记住,您可能需要处理整个集合而不是单个值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)