2013-03-26 101 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

相關問題