Como encontrar o nome de loginname, o nome de usuário do banco de dados ou os papéis do usuário do domínio SQLServer que não tem seu próprio login?

StackOverflow https://stackoverflow.com/questions/4268100

Pergunta

Eu criei um usuário de login e banco de dados chamado "Usuários do MyDomain Domain". Preciso encontrar quais funções um usuário conectado ao domínio tem, mas todas as chamadas para que o usuário atual retorne o nome de usuário do domínio, por exemplo. "MyDomain Nome de usuário" não o nome de usuário do banco de dados, por exemplo. "Usuários do MyDomain Domain".

Por exemplo, esta consulta retorna "MyDomain Username"

select original_login(),suser_name(), suser_sname(), system_user, session_user,  current_user, user_name()

E esta consulta retorna 0

select USER_ID()

Quero que o nome de usuário consulte database_role_members existe alguma função que o devolverá ou de qualquer outra maneira que eu possa obter as funções atuais dos usuários?

Foi útil?

Solução

Entendo que o login dos usuários de domínio é mapeado no grupo de anúncios?

Você deve ter em mente que o usuário pode estar em vários grupos de anúncios e cada um deles pode ser mapeado de alguma forma no banco de dados, o que pode ser um pouco confuso. Também significa que você precisa de algo com vários resultados :)

Experimente isso:

select * from sys.server_principals where type_desc = 'WINDOWS_GROUP' and is_member(name) = 1

Eu acho que deve pegar corretamente todos os logins do Windows Group que serão ligados a usuários específicos. Depois disso, você pode se juntar a ele para usuários de banco de dados, ou seja:

Select u.name from YourDB.sys.syslogins l
inner join YourDB.sys.sysusers u
on l.sid = u.sid
where l.loginname = ANY (select * from sys.server_principals where type_desc = 'WINDOWS_GROUP' and is_member(name) = 1)

Você deve ter em mente que - por todo - pode ser necessário lidar com conjuntos inteiros, em vez de valores únicos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top