Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как узнать все роли, в которые явно и неявно включен пользователь.  [new]
DeColo®es
Member

Откуда: Москва
Сообщений: 5503
Блог
Причем речь идет не о текущем пользователе, тут все просто.
Задача такая - предоставить список ролей для ПРОИЗВОЛЬНОГО пользователя, например, по uid.
SETUSER 'username'
и дальнейший
SELECT name, что-то еще FROM sysusers WHERE IS_MEMBER(name)=1
не катит, ибо SETUSER работает только под dbo, даже если пользователь включен в группу db_owner - ругается.

пройти по "дереву" sysmembers, конечно, можно, но нет ли чего-нибудь поизящней, из встроенных функций?
22 мар 06, 12:22    [2475791]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать все роли, в которые явно и неявно включен пользователь.  [new]
Glory
Member

Откуда:
Сообщений: 104760
sp_helpuser
22 мар 06, 12:28    [2475832]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать все роли, в которые явно и неявно включен пользователь.  [new]
liver
Member

Откуда: Moscow
Сообщений: 644
select g.name
from sysusers u, sysusers g, sysmembers m
where   g.uid = m.groupuid
	and g.issqlrole = 1
	and u.uid = m.memberuid
	and u.name = 'UserLogin'
22 мар 06, 12:31    [2475862]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать все роли, в которые явно и неявно включен пользователь.  [new]
DeColo®es
Member

Откуда: Москва
Сообщений: 5503
Блог
Glory
sp_helpuser

Не-а. Эта возвращает только ЯВНЫЕ включения. :(
22 мар 06, 12:35    [2475889]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать все роли, в которые явно и неявно включен пользователь.  [new]
DeColo®es
Member

Откуда: Москва
Сообщений: 5503
Блог
liver
select g.name
from sysusers u, sysusers g, sysmembers m
where   g.uid = m.groupuid
	and g.issqlrole = 1
	and u.uid = m.memberuid
	and u.name = 'UserLogin'

Тоже плохо - не более 1-го (ну или сколько предусмотреть в запросе) вложений.
22 мар 06, 12:39    [2475919]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать все роли, в которые явно и неявно включен пользователь.  [new]
liver
Member

Откуда: Moscow
Сообщений: 644
какие вложения, зачем вложения?
ты знаешь логин пользюка, и получаешь роли в которых он присутствует.
22 мар 06, 12:40    [2475930]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать все роли, в которые явно и неявно включен пользователь.  [new]
DeColo®es
Member

Откуда: Москва
Сообщений: 5503
Блог
liver
какие вложения, зачем вложения?
ты знаешь логин пользюка, и получаешь роли в которых он присутствует.

А такие вот вложения - роль сама может входить в другие роли.
И админ ПРИЛОЖЕНИЯ должен иметь возможность посмотреть совокупные права доступа пользователя после того, как он "нагородил" (а ему это реально нужно) например иерархию из 2-3 уровней групп доступа, которые в свою очередь базируются на предустановленных разработчиками группах, которые являются сами в зависимости от необходимости членами всяких там db_datareader, db_denydatareader, db_accesadmin....
22 мар 06, 12:47    [2475977]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать все роли, в которые явно и неявно включен пользователь.  [new]
liver
Member

Откуда: Moscow
Сообщений: 644
я тебе привел вариант, от которо можно оттолкнуться, чтоб решить твою проблему...
22 мар 06, 12:48    [2475987]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать все роли, в которые явно и неявно включен пользователь.  [new]
DeColo®es
Member

Откуда: Москва
Сообщений: 5503
Блог
liver
я тебе привел вариант, от которо можно оттолкнуться, чтоб решить твою проблему...
Спаcибо, конечно, но я написал вначале про то, что знаю, что такое sysmembers ;)
22 мар 06, 12:51    [2476001]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать все роли, в которые явно и неявно включен пользователь.  [new]
sander1
Member

Откуда: Москва
Сообщений: 366
Написать рекурсивную процедуру =)
22 мар 06, 13:03    [2476104]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать все роли, в которые явно и неявно включен пользователь.  [new]
iap
Member

Откуда: Москва
Сообщений: 47024
DeColo®es
liver
какие вложения, зачем вложения?
ты знаешь логин пользюка, и получаешь роли в которых он присутствует.
А такие вот вложения - роль сама может входить в другие роли.


Всё может быть ещё сложнее. К роли может быть привязана группа пользователей Windows, в эту группу могут входить как пользователи, так и другие группы, причём эти группы могут быть из другого домена...
30 мар 06, 16:55    [2507780]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить