Я хотів би створити користувача, який читає, на моєму екземплярі SQL Server 2012. Я хотів би дозволити йому право виконувати будь-яку збережену процедуру або функцію, або прямий оператор SQL, який витягує дані з усіх таблиць і представлень, але не оновлювати чи вставляти (тобто нічого не читати і нічого не писати).
Чи можу я налаштувати це, не конкретно надаючи права на кожну функцію чи збережену процедуру за назвою, а краще надати йому право виконання на будь-яку функцію чи збережену процедуру, лише позбавивши право змінювати таблиці?
Чи щось зміниться, якщо замість цього я запустя SQL Server 2008?
Пояснення та доповнення:
- Якщо збережена процедура змінює дані, користувач повинен отримувати повідомлення про помилку (або забороняючи модифікацію, або повністю відмовляючи в доступу до збереженої процедури).
- Якщо потенційне рішення передбачає заборону дозволів, чи можу я просто не надати певні дозволи замість відмови?
- Чи може заперечення застосовуватися до всіх таблиць, представлень тощо (існуючих зараз і в майбутньому) в базі даних в одному висловлюванні?
GRANT
надати дозволи, DENY
заборонити дозволи та REVOKE
видалити GRANT
або DENY
. Без GRANT
або DENY
користувач може успадкувати дозволи, скажімо, отримати доступ до збереженої процедури.
DENY DELETE, INSERT, UPDATE
у базі даних чи схемі, я вважаю, що це вплине лише на таблиці та представлення даних.