如何查找没有自己登录的sqlserver域用户的登录名,数据库用户名或角色?

Ada*_*ler 9 sql-server sql-server-2008 windowsdomainaccount

我创建了一个名为"MYDOMAIN\Domain Users"的登录和数据库用户.我需要找到登录的域用户具有的角色,但是获取当前用户的所有调用都返回域用户名,例如."MYDOMAIN\username"不是数据库用户名,例如."MYDOMAIN \域用户".

例如,此查询返回"MYDOMAIN\username"

select original_login(),suser_name(), suser_sname(), system_user, session_user,  current_user, user_name()
Run Code Online (Sandbox Code Playgroud)

此查询返回0

select USER_ID()
Run Code Online (Sandbox Code Playgroud)

我想用户名查询database_role_members是否有任何函数可以返回它或任何其他方式我可以获得当前用户角色?

nim*_*dil 11

我了解Domain Users登录映射到AD组?

你必须记住,用户可以在几个AD组中,并且每个组都可以在数据库中以某种方式映射,这可能有点混乱.这也意味着你需要多种结果的东西:)

试试这个:

select * from sys.server_principals where type_desc = 'WINDOWS_GROUP' and is_member(name) = 1
Run Code Online (Sandbox Code Playgroud)

我认为它应该正确抓取将与特定用户绑定的所有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)
Run Code Online (Sandbox Code Playgroud)

你必须记住 - 一直 - 你可能需要处理整个集合而不是单个值.