Здравствуйте, 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, а ко всем остальным ролям применять?
Сомневаюсь, что такое возможно.