Sql server 没有用户登录时如何获取Windows组名

Sql server 没有用户登录时如何获取Windows组名,sql-server,Sql Server,我有一个场景,用户可以通过其Windows组登录到SQL Server。用户本身没有登录名,数据库中也没有用户 然后,我想获取用户登录的windows组的名称。但是,suser\u sname()返回实际用户名suser_sid()对我也没有帮助 有人知道怎么做吗 DECLARE @user SYSNAME; SET @user = SUSER_SNAME(); EXEC xp_logininfo @user, 'all'; 这将为用户所在的任何组返回行(这些行在权限路径列中具有非空值)。但是

我有一个场景,用户可以通过其Windows组登录到SQL Server。用户本身没有登录名,数据库中也没有用户

然后,我想获取用户登录的windows组的名称。但是,
suser\u sname()
返回实际用户名
suser_sid()
对我也没有帮助

有人知道怎么做吗

DECLARE @user SYSNAME;
SET @user = SUSER_SNAME();
EXEC xp_logininfo @user, 'all';
这将为用户所在的任何组返回行(这些行在
权限路径
列中具有非空值)。但是它也会为他们自己的用户名返回一行(在我的例子中,
权限路径
对于该行为空)

您还可以通过以下查询查看所有可能的组:

SELECT * FROM master.sys.server_principals
  WHERE type = 'G'; -- type_desc = 'WINDOWS_GROUP'

该用户还可能是尚未向SQL Server注册的其他广告组的成员。你需要去看广告。

如果一个Windows用户是两个不同Windows组的成员,你希望SQL Server选择哪一个组?谢谢你的评论,我应该对此很清楚。我不希望SQL Server选择一个—如果有多个组,我希望获得所有组。长话短说。。。如果用户是通过Windows组而不是用户登录的,我想知道是哪一个。谢谢Aaron-这正是我要找的。