Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment trouver le nom de connexion, le nom d'utilisateur de la base de données ou les rôles de l'utilisateur du domaine sqlserver qui n'a pas sa propre connexion ?

Je comprends que la connexion des utilisateurs du domaine est mappée dans le groupe AD ?

Vous devez garder à l'esprit que l'utilisateur peut appartenir à plusieurs groupes AD et que chacun d'eux peut être mappé d'une manière ou d'une autre dans la base de données, ce qui peut être un peu compliqué. Cela signifie également que vous avez besoin de 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 du groupe Windows qui seront liées à des utilisateurs particuliers. Après cela, vous pouvez le rejoindre pour les utilisateurs de la base de données, c'est-à-dire :

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 du long - vous devrez peut-être gérer des ensembles entiers plutôt que des valeurs uniques.