O SharePoint tem um botão para "Verificar permissões". Aqui você pode selecionar um usuário do Active Directory, e ele passará magicamente por grupos e mostrará todo o acesso que o usuário tem no site com base em quais grupos ele está.
Este é um tiro no escuro, pois trabalho com o SQL Server há um bom tempo e nunca ouvi falar disso, mas caso tenha perdido alguma coisa ...
Existe algo semelhante no SQL Server? No momento, a verificação de permissões envolve examinar os grupos do AD que têm logons na instância e passar pelo AD manualmente para ver quem está em qual grupo e, em seguida, examinar as permissões do banco de dados manualmente. Um "Verificar Permissões" como o SharePoint pode economizar muito tempo.
Você pode fazer isso usando o seguinte código:
Ou você pode representar esse login e usar sys.login_token assim:
Consegui combinar sugestões aqui com um script antigo que eu tinha disponível para criar o seguinte, que mostrará todos os grupos em que um usuário está, juntamente com as funções de banco de dados para as quais eles são mapeados. Observe que isso não é totalmente testado, mas deu os resultados que eu precisava.
No momento, a única maneira que conheço de fazer isso seria criar um servidor vinculado ao seu Active Directory. Depois de fazer isso, você pode criar um procedimento armazenado para consultar o AD via Openquery.
Espero que isto ajude
Sim, é perfeitamente possível fazê-lo. Você deve representar o usuário com
EXECUTE AS
e, em seguida, verificar as permissões usandoHAS_PERMS_BY_NAME
ousys.fn_my_permissions
.Eu recomendo fortemente que você não tente atravessar o AD e/ou tentar fazer engenharia reversa de permissões de arquivos
sys.dataabse_permissions
.