如何找到登录名,数据库用户名,或谁没有自己的登录SQLSERVER域用户的角色?
-
28-09-2019 - |
题
我已经创建称为“MYDOMAIN \域用户”登录名和数据库用户。我需要找到哪些角色登录的域用户,但所有的呼叫来获得当前用户返回域用户名如。 “MYDOMAIN \用户名”,而不是数据库用户名如。 “MYDOMAIN \域用户”。
例如,该查询将返回 “MYDOMAIN \用户名”
select original_login(),suser_name(), suser_sname(), system_user, session_user, current_user, user_name()
和该查询返回0
select USER_ID()
我想要的用户名来查询database_role_members有将返回它或任何其他方式,我可以获取当前用户角色的任何功能?
解决方案
据我所知,域用户的登录被映射到广告组?
您必须记住,用户可以在几个广告组和它们中的每能以某种方式在其可以是有点混乱数据库被映射。此外,它意味着你需要的东西与多个结果:)
尝试这种情况:
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)
您必须记住, - 所有的方式 - 你可能需要处理成套而不是单值
。不隶属于 StackOverflow