Как найти имя пользователя, имеющее имя пользователя базы данных или роли пользователя SQLSERVER домена, у которого нет собственного входа?

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

Вопрос

Я создал пользователя входа в систему и базу данных под названием «Mydomain Users домена». Мне нужно найти, какие роли зарегистрированы в системе домена пользователя, но все вызовы, чтобы получить текущий пользователь, возвращает имя пользователя домена, например. «Mydomain username» не имена пользователя базы данных, например. «Mydomain Users домен».

Например, этот запрос возвращает «Mydomain username»

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

И этот запрос возвращается 0

select USER_ID()

Я хочу имя пользователя для запроса database_role_members - это любая функция, которая вернет ее или любой другой путь, я могу получить текущие роли пользователей?

Это было полезно?

Решение

Я понимаю, что логин пользователей домена отображается в группу AD?

Вы должны помнить, что пользователь может быть в нескольких группах объявлений, и каждый из них может каким-то образом можно сопоставить в базе данных, что может быть немного грязным. Также это означает, что вам нужно что-то с несколькими результатами :)

Попробуй это:

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

Я думаю, что он должен правильно взять на себя все логины Windows Group, которые будут связаны с конкретными пользователями. После этого вы можете присоединиться к нему для пользователей базы данных, т. Е.

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)

Вы должны помнить, что - полностью - вам может потребоваться обработать целые множества, а затем одно значения.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top