Comment trouver loginname, nom d'utilisateur de base de données ou des rôles de l'utilisateur de domaine SQLServer qui ne disposent pas de leur propre connexion?

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

Question

J'ai créé un utilisateur de connexion et base de données appelée « MYDOMAIN \ Users domaine ». Je dois trouver les rôles utilisateur connecté de domaine a, mais tous les appels pour obtenir l'utilisateur actuel retourne le nom d'utilisateur de domaine par exemple. « MYDOMAIN \ nom d'utilisateur » pas la base de données, par exemple le nom d'utilisateur. "MYDOMAIN \ Users domaine".

Par exemple, cette requête renvoie "MYDOMAIN \ nom d'utilisateur"

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

Cette requête renvoie 0

select USER_ID()

Je veux que le nom d'utilisateur pour database_role_members de requête est-il une fonction qui renverra ou de toute autre manière que je peux obtenir les rôles actuels des utilisateurs?

Était-ce utile?

La solution

Je comprends que le login des utilisateurs de domaine est mis en correspondance dans le groupe AD?

Vous devez garder à l'esprit que l'utilisateur peut être dans plusieurs groupes AD et chacun d'eux peut être mis en correspondance en quelque sorte dans la base de données qui peut être un désordre de peu. En outre, il signifie que vous avez besoin quelque chose avec plusieurs résultats:)

Essayez ceci:

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

Je pense qu'il devrait saisir correctement toutes les connexions de groupe Windows qui seront liés avec des utilisateurs particuliers. Après cela, vous pouvez le joindre pour les utilisateurs de la base de données i.e.:.

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)

Vous devez garder à l'esprit que - tout le chemin - vous devrez peut-être gérer des ensembles complets plutôt que des valeurs uniques

.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top