2013-03-26 68 views
3

我有一个用户可以通过他们的Windows组登录到SQL Server的场景。用户本身在数据库中没有登录或用户。如何在没有用户登录时获取Windows组名称

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

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

+4

如果Windows用户是两个不同Windows组的成员,那么您希望SQL Server选择哪一个? – 2013-03-26 19:08:19

+0

感谢您的评论,我应该清楚这一点。我不希望SQL Server选择一个 - 如果有多个组,我希望得到所有这些组。要长话短说...如果用户通过Windows组而不是用户登录,我想知道哪个(s)。 – user884248 2013-03-26 22:29:17

回答

5
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其他AD组的成员服务器。你需要出去公元。

+0

谢谢Aaron--正是我在找的东西。 – user884248 2013-03-27 17:36:04

+0

超级有用:) – Davos 2015-01-20 04:44:05

相关问题