3

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

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

有谁知道如何做到这一点?

4

1 回答 1

5
DECLARE @user SYSNAME;
SET @user = SUSER_SNAME();
EXEC xp_logininfo @user, 'all';

这将为用户所在的任何组返回行(行在列中将具有非空值permission path)。但它也会为他们自己的用户名返回一行(在我的情况下permission path,该行为空)。

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

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

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

于 2013-03-26T22:45:35.357 回答