Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Выборка из sys.sysusers / 13 сообщений из 13, страница 1 из 1
26.04.2018, 16:37
    #39636875
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из sys.sysusers
SQL2016

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

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


Нету части моих датабазе ролей.
В чем проблема?
...
Рейтинг: 0 / 0
26.04.2018, 16:42
    #39636877
buser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из sys.sysusers
sp_helptext 'sys.sysusers'
...
Рейтинг: 0 / 0
26.04.2018, 16:44
    #39636878
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из sys.sysusers
Потому что Metadata Visibility
...
Рейтинг: 0 / 0
26.04.2018, 16:59
    #39636891
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из sys.sysusers
Гавриленко Сергей АлексеевичПотому что Metadata Visibility

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

Это похоже на мой случай, но как определить, к какой записи о датабазе роли я имею доступ, к какой нет?
Если бы я выбирал списко таблиц или вью, тогда ясно, нет прав к таблице, она не будет в списке.
А роли?
...
Рейтинг: 0 / 0
27.04.2018, 10:05
    #39637166
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из sys.sysusers
Может ли юзер определить он нормальный или "неполноценный" ? чтобы понимать, что запросы к вью типа sys.sysusers делать не надо?
...
Рейтинг: 0 / 0
27.04.2018, 10:37
    #39637198
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из sys.sysusers
Ролг ХупинМожет ли юзер определить он нормальный или "неполноценный" ? чтобы понимать, что запросы к вью типа sys.sysusers делать не надо?
Код: sql
1.
exists(select * from fn_my_permissions(null, 'database') where permission_name in (N'ALTER ANY USER', N'ALTER ANY ROLE') having count(*) = 2)
...
Рейтинг: 0 / 0
27.04.2018, 10:48
    #39637207
Yasha123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из sys.sysusers
это потому, что в данном случае, похоже, доменный юзер не есть логин ,
а база -- contained .
т.е. юзер создан напрямую в базе, минуя создание логина.
а sys.sysusers это всего лишь compatibility view
и его не стОит использовать в новых версиях,
а судя по contained, сервер не ниже 2012-ого.

это вью при использовании новых фич ведет себя загадочно,
в частности, не выдает fixed database roles contained-юзеру.
---
Гавриленко Сергей АлексеевичПотому что Metadata Visibility
в обычной не базе создайте бесправного юзера и убедитесь,
что он прекрасно видит fixed database roles , если опрашивает sysusers:
Код: sql
1.
2.
3.
4.
5.
create user test without login;

execute as user = 'test';
select * from sys.sysusers;
revert;
...
Рейтинг: 0 / 0
27.04.2018, 11:00
    #39637218
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из sys.sysusers
Yasha123это потому, что в данном случае, похоже, доменный юзер не есть логин ,
а база -- contained .
т.е. юзер создан напрямую в базе, минуя создание логина.
а sys.sysusers это всего лишь compatibility view
и его не стОит использовать в новых версиях,
а судя по contained, сервер не ниже 2012-ого.

это вью при использовании новых фич ведет себя загадочно,
в частности, не выдает fixed database roles contained-юзеру.
---
Гавриленко Сергей АлексеевичПотому что Metadata Visibility
в обычной не базе создайте бесправного юзера и убедитесь,
что он прекрасно видит fixed database roles , если опрашивает sysusers:
Код: sql
1.
2.
3.
4.
5.
create user test without login;

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




я не писал нигде, что база контейнед, это обычная база и таких у меня десяток
...
Рейтинг: 0 / 0
27.04.2018, 11:08
    #39637230
Yasha123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из sys.sysusers
Ролг Хупиня не писал нигде, что база контейнед, это обычная база и таких у меня десяток
тогда вопрос, какие именно роли не видно,
пользовательские или fixed ?
если у юзера нет прав, которые перечислил invm ,
он видит в юзерах лишь себя и те роли, куда сам входит.
---
кстати, чтобы видеть "не только себя в юзерах", можно и не иметь ALTER ANY USER, ALTER ANY ROLE
достаточно иметь VIEW DEFINITION
...
Рейтинг: 0 / 0
27.04.2018, 11:32
    #39637262
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из sys.sysusers
Yasha123Ролг Хупиня не писал нигде, что база контейнед, это обычная база и таких у меня десяток
тогда вопрос, какие именно роли не видно,
пользовательские или fixed ?
если у юзера нет прав, которые перечислил invm ,
он видит в юзерах лишь себя и те роли, куда сам входит.
---
кстати, чтобы видеть "не только себя в юзерах", можно и не иметь ALTER ANY USER, ALTER ANY ROLE
достаточно иметь VIEW DEFINITION

часть пользовательских ролей, скажем их всего 12, sa видит все 12, а юзер только 2
...
Рейтинг: 0 / 0
27.04.2018, 11:42
    #39637279
Yasha123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из sys.sysusers
Ролг Хупинчасть пользовательских ролей, скажем их всего 12, sa видит все 12, а юзер только 2
ну так про это уже Гавриленко написал:
обычный бесправный юзер видит лишь те роли, куда сам входит (+ фиксированные)
для того, чтобы видеть все роли, необходимо иметь alter any role
либо view definition .
...
Рейтинг: 0 / 0
27.04.2018, 11:44
    #39637283
Yasha123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из sys.sysusers
под доменным юзером сделай
Код: sql
1.
select * from fn_my_permissions(null, 'database') 


и убедись, что не имеет ни то, ни другое.
выдай одно из них юзеру -> будет видеть все роли
...
Рейтинг: 0 / 0
27.04.2018, 15:02
    #39637519
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из sys.sysusers
Yasha123под доменным юзером сделай
Код: sql
1.
select * from fn_my_permissions(null, 'database') 


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

ок, ясно, спасибо.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Выборка из sys.sysusers / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]