Sql-Server

我的使用者屬於哪些 AD 組登錄?

  • January 7, 2016

我不確定我是否為這個問題選擇了正確的標題。我真正想要的是,給定一個單獨的 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 組訪問我的伺服器/數據庫。

  1. 從上面的列表中,我的登錄屬於哪些 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授予域使用者訪問權限的組。

引用自:https://dba.stackexchange.com/questions/125504