DENY — оператор мови SQL, який не дає користувачам можливості виконувати дії. Це означає, що такий оператор видаляє існуючі повноваження у облікових записах користувачів або не дозволяє користувачам застосовувати повноваження від їх участі в групах, які можуть бути отримані в майбутньому.
Синтаксис команди DENY
DENY {ALL [PRIVILEGES]} | permission_list [ON [class::] securable] TO principal_list [CASCADE] [ AS principal ] Всі опції оператора мають таке ж логічне значення, що і опції з тими ж самими іменами в операторі GRANT, має додаткову опцію , яка вказує, що повноваження не будуть застосовуватися для користувача А і для будь-якого користувача, якому користувач А передасть ці повноваження . (Якщо опція не зазначена в операторі і відповідні повноваження до об'єкта задаються з , то повертається помилка.)
Приклади використання оператора DENY Оператор забороняє користувачеві, групі або ролі отримувати доступ до повноважень, отриманим через їх участь в групі або ролі. Це означає, що якщо користувач належить групі (або ролі) і надані групі повноваження скасовуються для цього користувача, то цей користувач буде єдиним в групі, хто не зможе використовувати ці повноваження. З іншого боку, якщо повноваження скасовуються для всієї групи, то ці повноваження скасовуються для всіх членів цієї групи.
Приклад №1: USE sample; DENY CREATE TABLE, CREATE PROCEDURE TO username Інструкція у прикладі №1 скасовує для користувача раніше надані йому дозволи на створення таблиць і процедур.
Приклад №2: USE sample; GRANT SELECT ON project TO PUBLIC; DENY SELECT ON project TO username1, username2 У прикладі №2 показана негативна авторизація для деяких користувачів бази даних . Спочатку надається право на читання всіх рядків з таблиці для всіх користувачів бази даних . Потім це право скасовується для двох користувачів: і .
Примітки інструкцію GRANT можна розглядати як позитивну авторизацію користувача, а інструкцію - як негативну. Зазвичай інструкція використовується для заборони дозволів, вже наданих для групи (або ролі), окремим членам цієї групи. Заборона дозволів на більш високому рівні моделі безпеки компонента Database Engine анулює дозволи, надані на більш низькому рівні. Наприклад, якщо дозвіл SELECT заборонено на рівні бази даних (Приклад №1), і цей дозвіл передбачається для таблиці , в результаті чого дозвіл SELECT буде заборонено для таблиці , так само, як і для всіх інших таблиць цієї бази даних