Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Все права пользователя.  [new]
mssql_2012
Guest
Здравствуйте.
Подскажите каким запросом можно выбрать все права которыми обладает пользователь(CREATE,ALTER и т.д.)?
17 окт 13, 20:59    [14987866]     Ответить | Цитировать Сообщить модератору
 Re: Все права пользователя.  [new]
invm
Member

Откуда: Москва
Сообщений: 9823
use MyDB;

with x as
(
 select cast(user_id(N'DesiredUserName') as int) as usr_id

 union all

 select
  rm.role_principal_id
 from
  x join
  sys.database_role_members rm on rm.member_principal_id = x.usr_id
)
select
 dbp.*
from
 x join
 sys.database_permissions dbp on dbp.grantee_principal_id = x.usr_id;
17 окт 13, 22:10    [14988198]     Ответить | Цитировать Сообщить модератору
 Re: Все права пользователя.  [new]
invm
Member

Откуда: Москва
Сообщений: 9823
Или
use MyDB;

execute as user = N'DesiredUserName';
select * from fn_my_permissions(null, 'database');
revert;
17 окт 13, 22:17    [14988211]     Ответить | Цитировать Сообщить модератору
 Re: Все права пользователя.  [new]
Гость333
Member

Откуда:
Сообщений: 3683
invm
use MyDB;

with x as
(
 select cast(user_id(N'DesiredUserName') as int) as usr_id

 union all

 select
  rm.role_principal_id
 from
  x join
  sys.database_role_members rm on rm.member_principal_id = x.usr_id
)
select
 dbp.*
from
 x join
 sys.database_permissions dbp on dbp.grantee_principal_id = x.usr_id;

Так не будут видны разрешения, полученные через серверную роль.
18 окт 13, 06:59    [14995156]     Ответить | Цитировать Сообщить модератору
 Re: Все права пользователя.  [new]
invm
Member

Откуда: Москва
Сообщений: 9823
Гость333
Так не будут видны разрешения, полученные через серверную роль.
Да. Но автору нужны права пользователя, а не логина.
18 окт 13, 10:01    [14995875]     Ответить | Цитировать Сообщить модератору
 Re: Все права пользователя.  [new]
Гость333
Member

Откуда:
Сообщений: 3683
invm,

Тогда второй способ не подходит ;-)
Хотя я полагаю, что ТС не имел в виду подобные тонкости, и его интересуют права, полученные любым способом.
18 окт 13, 11:11    [14996472]     Ответить | Цитировать Сообщить модератору
 Re: Все права пользователя.  [new]
o-o
Guest
invm
Или
use MyDB;

execute as user = N'DesiredUserName';
select * from fn_my_permissions(null, 'database');
revert;


этот способ отвалится, если DesiredUserName создан с логина виндовской группы
18 окт 13, 11:20    [14996539]     Ответить | Цитировать Сообщить модератору
 Re: Все права пользователя.  [new]
invm
Member

Откуда: Москва
Сообщений: 9823
Гость333
Тогда второй способ не подходит ;-)
И действительно :)
Гость333
Хотя я полагаю, что ТС не имел в виду подобные тонкости, и его интересуют права, полученные любым способом.
Возможно. В любом случае, направление копания ему показано.
18 окт 13, 11:50    [14996860]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить