перенаправление из таблицы во view
От: Kvazimodo75  
Дата: 14.10.19 10:07
Оценка:
Коллеги, есть проблема и вопрос с ограничением на видимость записей.

MS SQL 2016.

Нужно ограничить видимость записей в таблице. Эта таблица участвует практически во всех запросах.

Так как большое легаси, то переход на вьюшки несколько затруднителен.

Пробовали решение с RLS. При росте количества пользователей, база останавливается вообще.

Можно ли попросить MS SQL о следующем:

если идёт select в таблицу от роли sa, то делать этот select. иначе делать select из специализированной view. не переписывая сами запросы, тоесть настройками и правилами.



или

можно ли НЕ применять RLS к роли sa, а ко всем остальным ролям применять?
ms sql 2016 rls view
Re: перенаправление из таблицы во view
От: Milena США  
Дата: 14.10.19 12:13
Оценка:
Здравствуйте, Kvazimodo75, Вы писали:

K>Коллеги, есть проблема и вопрос с ограничением на видимость записей.


K>MS SQL 2016.


K>Нужно ограничить видимость записей в таблице. Эта таблица участвует практически во всех запросах.


K>Так как большое легаси, то переход на вьюшки несколько затруднителен.


K>Пробовали решение с RLS. При росте количества пользователей, база останавливается вообще.

Поясните, почему? Что видно в плане исполнения? RLS очень зависима от индексов — если они не коррелируют со структурой запросов, то все будет тормозить.

Если записей слишком много, есть ли у вас патриции?

K>Можно ли попросить MS SQL о следующем:


K>если идёт select в таблицу от роли sa, то делать этот select. иначе делать select из специализированной view. не переписывая сами запросы, тоесть настройками и правилами.


Конечно, можно написать IF и проверять роль текущего аккаунта и потом брать соответствующую ветку. Хотя, мне кажется более интересный вариант — создать материальную вьюху с нормальным набором индексов, чтобы поддержать RLS и оттюнинговать запросы (убедиться, что нет всяких SELECT * и COUNT(*), что выбираются только нужные записи в каждом позапросе, а не все подряд и т.п.)

K>или


K>можно ли НЕ применять RLS к роли sa, а ко всем остальным ролям применять?

Сомневаюсь, что такое возможно.
Re: перенаправление из таблицы во view
От: rm822 Россия  
Дата: 16.10.19 15:23
Оценка:
K>если идёт select в таблицу от роли sa, то делать этот select. иначе делать select из специализированной view. не переписывая сами запросы, тоесть настройками и правилами.
теоретически есть default schema, и если вы ее в запросе не указываете явно, то биндинг может идти как к таблице [dbo].MyTable так и к вьюшке [restricted].[MyTable]
но я не пробовал, хз как там на практике
Re: перенаправление из таблицы во view
От: wildwind Россия  
Дата: 16.10.19 16:41
Оценка:
Здравствуйте, Kvazimodo75, Вы писали:

K>Пробовали решение с RLS. При росте количества пользователей, база останавливается вообще.

K>Можно ли попросить MS SQL о следующем:
K>если идёт select в таблицу от роли sa, то делать этот select. иначе делать select из специализированной view.

Думаете, c view база не "остановится" так же, как с RLS? Запросы-то, по сути те же будут выполняться.
Или вы как-то не так RLS сделали.

А вообще, легаси оно такое. Начиная с определенного момента, либо железо наращивать, либо переписывать.
Re[2]: перенаправление из таблицы во view
От: Kvazimodo75  
Дата: 17.10.19 10:38
Оценка:
Здравствуйте, wildwind, Вы писали:


W>Думаете, c view база не "остановится" так же, как с RLS? Запросы-то, по сути те же будут выполняться.

W>Или вы как-то не так RLS сделали.

RLS не надо применять к sa. Но я не знаю, как избежать этого.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.