Я хотел бы иметь контроль над пользователями db для выбора таблиц в sql. Напр. Существует пользователь с именем «user1», а другой - «user2».Ограничить количество строк, возвращенных на основании роли пользователя
User1 имеет роль администратора в базе данных. Пользователь2 имеет меньшую роль. Когда пользователь запускает запрос, я хочу проверить имя пользователя и userrole, если это пользователь admin, а затем я разрешаю ему запускать. Если его более низкий пользователь роли, мне нужно ограничить результат запроса (не отрицать, просто ограничивать.) Для ex. Я не хочу, чтобы более низкая роль пользователя отображала столбец PhoneNumber в таблице, поэтому мне нужно предоставить этому пользователю результат в качестве таблицы, за исключением столбца PhoneNumber.
Я знаю, что могу сделать это на разрешениях столбцов в области ролей. Но я также хочу ограничить запрос следующим: просто верните верхний результат (5), а не всю таблицу.
Мне нужна хранимая процедура или что-то в этом роде, которая автоматически запускается, когда пользователь выполняет запрос. Есть ли какой-либо sp или что-то еще подобное в sql?
Заранее спасибо.
Нет, не существует. И что вы подразумеваете под 'f5', вы предоставляете своим пользователям доступ к SSMS? Ваш лучший подход будет заключаться в том, чтобы удалить доступ с помощью ролей к ограниченным таблицам и разрешить результаты, выполнив против хранимых процедур. В хранимой процедуре вы можете проверить роли/права и вернуть то, что подходит. В качестве альтернативы вы можете использовать Sql Views и предоставить/ограничить права на эти виды. Все звуки записи кажутся мне взломанными, хотя, возможно, лучше переоценить фактические требования, а затем попытаться продвинуть это, особенно если пользователи уже имеют права использовать SSMS. – Igor
Если приложение не является SSMS, что это такое? –
они используют ssms для подключения к экземпляру sql. это не мой вопрос. Все, что мне нужно, - это контроль между «пользователем запускает запрос» и «sql возвращает результат». Мне нужно проверить запрос, который пользователь хочет запустить. то я решаю, что дать серверу sql, чтобы дать результаты, которые я хочу. –