Sql-Server
我的使用者屬於哪些 AD 組登錄?
我不確定我是否為這個問題選擇了正確的標題。我真正想要的是,給定一個單獨的 Windows AD 使用者,我想找出有權訪問此伺服器中特定數據庫的 Windows AD 組(登錄名)的列表
當我執行以下查詢時
select name, principal_id, type, type_desc, default_schema_name, create_date, modify_date, owning_principal_id, sid, is_fixed_role from sys.database_principals
在我的伺服器中
Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64) 2011 年 6 月 17 日 00:54:03 版權所有 (c) Windows NT 6.1 上的 Microsoft Corporation 標準版(64 位)(內部版本 7601:Service Pack 1)
我得到以下結果(部分列表):
我需要知道特定登錄擁有的所有權限。此登錄名可以通過 AD 組訪問我的伺服器/數據庫。
- 從上面的列表中,我的登錄屬於哪些 AD 組?
我一直在這樣做,但我真的很想找出該使用者所屬的 AD 組(根據上圖有權訪問此伺服器)的列表。
首先,我以相關使用者身份執行
EXECUTE AS LOGIN='mycompany\HThorne' DECLARE @User VARCHAR(20) SELECT @USER = SUBSTRING(SUSER_SNAME(), CHARINDEX('\', SUSER_SNAME()) + 1, LEN(SUSER_SNAME()))
我確保我有正確的憑據
SELECT @USER , SUSER_SNAME() ,SYSTEM_USER , USER_NAME() , CURRENT_USER , ORIGINAL_LOGIN() , USER ,SESSION_USER
我轉到特定數據庫並使用 fn_my_permissions - 以相關使用者身份執行
use WebDataImportStage go SELECT * FROM fn_my_permissions (NULL, 'DATABASE'); GO REVERT
這給了我以下結果:
從上面的列表中,我的登錄屬於哪些 AD 組?
您需要做的就是執行以下命令:
EXEC xp_logininfo 'domain\useraccount','all'; GO
如果該帳戶沒有通過該伺服器上的任何組訪問,並且是域中的合法帳戶,您將不會收到任何返回記錄。如果發現使用者具有權限,您可以通過選中
permission path
. 這將返回domain\groupname
授予域使用者訪問權限的組。