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

Откуда: Чебаркуль
Сообщений: 3673
SQL2016

Делаю запрос:
-- sa
SELECT * FROM sys.sysusers
---
32 записи

-- доменный юзер
SELECT * FROM sys.sysusers
---
22 записи


Нету части моих датабазе ролей.
В чем проблема?
26 апр 18, 16:37    [21371491]     Ответить | Цитировать Сообщить модератору
 Re: Выборка из sys.sysusers  [new]
buser
Member

Откуда: Санкт-Петербург
Сообщений: 4537
sp_helptext 'sys.sysusers'
26 апр 18, 16:42    [21371501]     Ответить | Цитировать Сообщить модератору
 Re: Выборка из sys.sysusers  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36905
Потому что Metadata Visibility
26 апр 18, 16:44    [21371509]     Ответить | Цитировать Сообщить модератору
 Re: Выборка из sys.sysusers  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3673
Гавриленко Сергей Алексеевич
Потому что Metadata Visibility


Хорошо, пишут
Queries on system views might only return a subset of rows, or sometimes an empty result set.

Это похоже на мой случай, но как определить, к какой записи о датабазе роли я имею доступ, к какой нет?
Если бы я выбирал списко таблиц или вью, тогда ясно, нет прав к таблице, она не будет в списке.
А роли?
26 апр 18, 16:59    [21371561]     Ответить | Цитировать Сообщить модератору
 Re: Выборка из sys.sysusers  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3673
Может ли юзер определить он нормальный или "неполноценный" ? чтобы понимать, что запросы к вью типа sys.sysusers делать не надо?
27 апр 18, 10:05    [21372790]     Ответить | Цитировать Сообщить модератору
 Re: Выборка из sys.sysusers  [new]
invm
Member

Откуда: Москва
Сообщений: 9279
Ролг Хупин
Может ли юзер определить он нормальный или "неполноценный" ? чтобы понимать, что запросы к вью типа sys.sysusers делать не надо?
exists(select * from fn_my_permissions(null, 'database') where permission_name in (N'ALTER ANY USER', N'ALTER ANY ROLE') having count(*) = 2)
27 апр 18, 10:37    [21372887]     Ответить | Цитировать Сообщить модератору
 Re: Выборка из sys.sysusers  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
это потому, что в данном случае, похоже, доменный юзер не есть логин,
а база -- contained.
т.е. юзер создан напрямую в базе, минуя создание логина.
а sys.sysusers это всего лишь compatibility view
и его не стОит использовать в новых версиях,
а судя по contained, сервер не ниже 2012-ого.

это вью при использовании новых фич ведет себя загадочно,
в частности, не выдает fixed database roles contained-юзеру.
---
Гавриленко Сергей Алексеевич
Потому что Metadata Visibility

в обычной не базе создайте бесправного юзера и убедитесь,
что он прекрасно видит fixed database roles, если опрашивает sysusers:
create user test without login;

execute as user = 'test';
select * from sys.sysusers;
revert;
27 апр 18, 10:48    [21372916]     Ответить | Цитировать Сообщить модератору
 Re: Выборка из sys.sysusers  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3673
Yasha123
это потому, что в данном случае, похоже, доменный юзер не есть логин,
а база -- contained.
т.е. юзер создан напрямую в базе, минуя создание логина.
а sys.sysusers это всего лишь compatibility view
и его не стОит использовать в новых версиях,
а судя по contained, сервер не ниже 2012-ого.

это вью при использовании новых фич ведет себя загадочно,
в частности, не выдает fixed database roles contained-юзеру.
---
Гавриленко Сергей Алексеевич
Потому что Metadata Visibility

в обычной не базе создайте бесправного юзера и убедитесь,
что он прекрасно видит fixed database roles, если опрашивает sysusers:
create user test without login;

execute as user = 'test';
select * from sys.sysusers;
revert;



я не писал нигде, что база контейнед, это обычная база и таких у меня десяток
27 апр 18, 11:00    [21372951]     Ответить | Цитировать Сообщить модератору
 Re: Выборка из sys.sysusers  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
Ролг Хупин
я не писал нигде, что база контейнед, это обычная база и таких у меня десяток

тогда вопрос, какие именно роли не видно,
пользовательские или fixed?
если у юзера нет прав, которые перечислил invm,
он видит в юзерах лишь себя и те роли, куда сам входит.
---
кстати, чтобы видеть "не только себя в юзерах", можно и не иметь ALTER ANY USER, ALTER ANY ROLE
достаточно иметь VIEW DEFINITION
27 апр 18, 11:08    [21372983]     Ответить | Цитировать Сообщить модератору
 Re: Выборка из sys.sysusers  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3673
Yasha123
Ролг Хупин
я не писал нигде, что база контейнед, это обычная база и таких у меня десяток

тогда вопрос, какие именно роли не видно,
пользовательские или fixed?
если у юзера нет прав, которые перечислил invm,
он видит в юзерах лишь себя и те роли, куда сам входит.
---
кстати, чтобы видеть "не только себя в юзерах", можно и не иметь ALTER ANY USER, ALTER ANY ROLE
достаточно иметь VIEW DEFINITION


часть пользовательских ролей, скажем их всего 12, sa видит все 12, а юзер только 2
27 апр 18, 11:32    [21373095]     Ответить | Цитировать Сообщить модератору
 Re: Выборка из sys.sysusers  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
Ролг Хупин
часть пользовательских ролей, скажем их всего 12, sa видит все 12, а юзер только 2

ну так про это уже Гавриленко написал:
обычный бесправный юзер видит лишь те роли, куда сам входит (+ фиксированные)
для того, чтобы видеть все роли, необходимо иметь alter any role
либо view definition.
27 апр 18, 11:42    [21373152]     Ответить | Цитировать Сообщить модератору
 Re: Выборка из sys.sysusers  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
под доменным юзером сделай
select * from fn_my_permissions(null, 'database') 

и убедись, что не имеет ни то, ни другое.
выдай одно из них юзеру -> будет видеть все роли
27 апр 18, 11:44    [21373171]     Ответить | Цитировать Сообщить модератору
 Re: Выборка из sys.sysusers  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3673
Yasha123
под доменным юзером сделай
select * from fn_my_permissions(null, 'database') 

и убедись, что не имеет ни то, ни другое.
выдай одно из них юзеру -> будет видеть все роли


ок, ясно, спасибо.
27 апр 18, 15:02    [21374303]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить