Come trovare loginname, nome utente del database, o ruoli di utente di dominio SQLServer che non hanno un proprio accesso?
-
28-09-2019 - |
Domanda
Ho creato un utente di accesso e database denominato "Utenti MYDOMAIN \ dominio". Ho bisogno di trovare ciò che i ruoli di un utente connesso dominio ha, ma tutte le chiamate per ottenere l'utente corrente restituire il dominio nome utente ad es. "Dominio \ nomeutente" non il database nome utente ad es. "Gli utenti MYDOMAIN \ Domain".
Ad esempio, questa query restituisce "dominio \ nomeutente"
select original_login(),suser_name(), suser_sname(), system_user, session_user, current_user, user_name()
E questa query restituisce 0
select USER_ID()
Voglio il nome utente per database_role_members di query v'è alcuna funzione che restituirlo o in qualsiasi altro modo per ottenere i ruoli degli utenti attuali?
Soluzione
Capisco che l'Users login dominio è mappato in gruppo di annunci?
Si deve tenere a mente che l'utente può essere in diversi gruppi di annunci e ciascuno di essi può essere mappato in qualche modo nel database che può essere un po 'confuso. Inoltre significa che è necessario qualcosa con più risultati:)
Prova questo:
select * from sys.server_principals where type_desc = 'WINDOWS_GROUP' and is_member(name) = 1
penso che dovrebbe prendere correttamente tutti gli account di accesso di gruppo di Windows che saranno legati a particolari utenti. Dopo di che si può aderire per gli utenti di database cioè:.
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)
È necessario tenere a mente che - tutto il senso - potrebbe essere necessario per gestire tutta la serie piuttosto che valori singoli
.