이 질문에 대한 올바른 제목을 선택했는지 확실하지 않습니다. 내가 실제로 따르는 것은 개별 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 (빌드 7601 : 서비스 팩 1)의 Microsoft Corporation Standard Edition (64 비트)
다음과 같은 결과 (부분 목록)를 얻습니다.
특정 로그인의 모든 권한을 알아야합니다. 이 로그인은 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
그리고 그 결과는 다음과 같습니다.