sql >> Base de Datos >  >> RDS >> Sqlserver

¿Cómo encontrar el nombre de inicio de sesión, el nombre de usuario de la base de datos o los roles del usuario del dominio sqlserver que no tiene su propio inicio de sesión?

Entiendo que el inicio de sesión de los usuarios del dominio está asignado al grupo AD.

Debe tener en cuenta que el usuario puede estar en varios grupos de AD y cada uno de ellos puede asignarse de alguna manera en la base de datos, lo que puede ser un poco complicado. También significa que necesitas algo con múltiples resultados :)

Prueba esto:

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

Creo que debería capturar correctamente todos los inicios de sesión de grupos de Windows que se vincularán con usuarios particulares. Después de eso, puede unirse a él para los usuarios de la base de datos, es decir:

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)

Debe tener en cuenta que, en todo momento, es posible que deba manejar conjuntos completos en lugar de valores únicos.