Não tenho certeza se escolhi o título certo para esta pergunta. o que realmente quero é que, dado um usuário individual do Windows AD, eu gostaria de descobrir a lista dos grupos do Windows AD (logins) que têm acesso a um banco de dados específico neste servidor
quando executo a seguinte consulta
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
no meu servidor
Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64) 17 de junho de 2011 00:54:03 Direitos autorais (c) Microsoft Corporation Standard Edition (64 bits) no Windows NT 6.1 (Build 7601: Service Pack 1)
Recebo os seguintes resultados (lista parcial):
Preciso conhecer todas as permissões que um login específico possui. esse logon tem acesso ao meu servidor / banco de dados através de grupos do AD.
1) a quais grupos do AD, da lista acima, pertence meu logon?
Fiz isso abaixo, mas gostaria realmente de descobrir a lista dos grupos do AD (que têm acesso a esse servidor de acordo com a imagem acima) à qual esse usuário pertence.
Primeiro eu executo como o usuário em questão
EXECUTE AS LOGIN='mycompany\HThorne'
DECLARE @User VARCHAR(20)
SELECT @USER = SUBSTRING(SUSER_SNAME(),
CHARINDEX('\', SUSER_SNAME()) + 1, LEN(SUSER_SNAME()))
certifico-me de que tenho as credenciais corretas
SELECT @USER
, SUSER_SNAME()
,SYSTEM_USER
, USER_NAME()
, CURRENT_USER
, ORIGINAL_LOGIN()
, USER
,SESSION_USER
Eu vou ao banco de dados específico e uso o fn_my_permissions - executado como o usuário em questão
use WebDataImportStage
go
SELECT * FROM fn_my_permissions (NULL, 'DATABASE');
GO
REVERT
e isso está me dando o resultado abaixo:
fonte
Se entendi corretamente, você pode fazer isso com a ajuda do xp_logininfo, que retorna informações sobre usuários e grupos do Windows.
Diga simplesmente executando
Caso contrário, você pode usar a consulta abaixo, que eu tenho usado no meu repositório, não tenho certeza de onde obtive isso :), mas ainda pode ser útil:
fonte