DENY, запрет разрешений на объект (Transact-SQL)
Запрещает разрешения на член класса OBJECT защищаемых объектов. Члены класса OBJECT: таблицы, представления, возвращающие табличное значение функции, хранимые процедуры, расширенные хранимые процедуры, скалярные функции, агрегатные функции, очереди обслуживания и синонимы.
Соглашения о синтаксисе в Transact-SQL
Синтаксис
DENY <permission> [ ,...n ] ON
[ OBJECT :: ][ schema_name ]. object_name [ ( column [ ,...n ] ) ]
TO <database_principal> [ ,...n ]
[ CASCADE ]
[ AS <database_principal> ]
<permission> ::=
ALL [ PRIVILEGES ] | permission [ ( column [ ,...n ] ) ]
<database_principal> ::=
Database_user
| Database_role
| Application_role
| Database_user_mapped_to_Windows_User
| Database_user_mapped_to_Windows_Group
| Database_user_mapped_to_certificate
| Database_user_mapped_to_asymmetric_key
| Database_user_with_no_login
Аргументы
permission
Обозначает разрешение, которое можно запретить для содержащегося в схеме объекта. Список разрешений см. в подразделе «Примечания» далее в этом разделе.ALL
Запрет разрешения ALL не запрещает все возможные разрешения. Запрет ALL эквивалентен запрету всех разрешений ANSI-92, применимых к данному объекту. Значение ALL меняется следующим образом.Разрешения на скалярные функции: EXECUTE, REFERENCES.
Разрешения на функции с табличным значением: DELETE, INSERT, REFERENCES, SELECT, UPDATE.
Разрешения на хранимые процедуры: EXECUTE.
Разрешения на таблицы: DELETE, INSERT, REFERENCES, SELECT, UPDATE.
Разрешения на представления: DELETE, INSERT, REFERENCES, SELECT, UPDATE.
PRIVILEGES
Включено для совместимости с ANSI-92. Не влияет на работу аргумента ALL.column
Указывает имя столбца в таблице, представлении или функции с табличным значением, для которых запрещается разрешение. Круглые скобки обязательны ( ). Для столбца можно запрещать только разрешения SELECT, REFERENCES и UPDATE. Аргумент column может быть указан в предложении PERMISSIONS или после имени защищаемого объекта.Внимание! Запрет (DENY) на уровне таблицы имеет меньший приоритет, чем предоставление разрешения (GRANT) на уровне столбца. Такая несогласованность в иерархии разрешений сохранена в целях обратной совместимости.
ON [ OBJECT :: ] [ schema_name ] . object_name
Указывает объект, для которого запрещается разрешение. Фраза OBJECT необязательна, если задан аргумент schema_name. Если фраза OBJECT используется, квалификатор области (::) обязателен. Если не указан аргумент schema_name, подразумевается схема по умолчанию. Если указан аргумент schema_name, обязательно указание квалификатора области схемы (.).TO <database_principal>
Задает участника, для которого запрещается разрешение.CASCADE
Показывает, что запрещаемое разрешение также запрещается для других участников, которым оно было предоставлено данным участником.AS <database_principal>
Задает участника, от которого участник, выполняющий данный запрос, получает право на запрет разрешения.Database_user
Задает пользователя базы данных.Database_role
Задает роль базы данных.Application_role
Указывает роль приложения.Database_user_mapped_to_Windows_User
Указывает пользователя базы данных, сопоставленного с пользователем Windows.Database_user_mapped_to_Windows_Group
Указывает пользователя базы данных, сопоставленного с группой Windows.Database_user_mapped_to_certificate
Указывает пользователя базы данных, сопоставленного с сертификатом.Database_user_mapped_to_asymmetric_key
Указывает пользователя базы данных, сопоставленного с асимметричным ключом.Database_user_with_no_login
Указывает пользователя базы данных без соответствующего участника уровня сервера.
Замечания
Сведения об объектах видны в различных представлениях каталога. Дополнительные сведения см. в разделе Представления каталога объектов (Transact-SQL).
Объект — это защищаемый объект уровня схемы, содержащийся в той схеме, которая является его родителем в иерархии разрешений. Наиболее специфичные и ограниченные разрешения, которые можно запретить для объекта, перечислены в следующей таблице вместе с общими разрешениями, неявно содержащими их.
Разрешение объекта |
Содержится в разрешении объекта |
Содержится в разрешении схемы |
---|---|---|
ALTER |
CONTROL |
ALTER |
CONTROL |
CONTROL |
CONTROL |
DELETE |
CONTROL |
DELETE |
EXECUTE |
CONTROL |
EXECUTE |
INSERT |
CONTROL |
INSERT |
RECEIVE |
CONTROL |
CONTROL |
REFERENCES |
CONTROL |
REFERENCES |
SELECT |
RECEIVE |
SELECT |
TAKE OWNERSHIP |
CONTROL |
CONTROL |
UPDATE |
CONTROL |
UPDATE |
VIEW CHANGE TRACKING |
CONTROL |
VIEW CHANGE TRACKING |
VIEW DEFINITION |
CONTROL |
VIEW DEFINITION |
Разрешения
Необходимо разрешение CONTROL для данного объекта.
При использовании предложения AS указанный участник должен быть владельцем объекта, разрешения на который запрещаются для этого участника.
Примеры
А.Запрет разрешения SELECT на таблицу
В следующем примере запрещает разрешение SELECT для пользователя RosaQdM на таблицу Person.Address в базе данных AdventureWorks2012.
USE AdventureWorks2012;
DENY SELECT ON OBJECT::Person.Address TO RosaQdM;
GO
Б.Запрет разрешения EXECUTE на хранимую процедуру
В следующем примере запрещается разрешение EXECUTE на хранимую процедуру HumanResources.uspUpdateEmployeeHireInfo для роли приложения под названием Recruiting11.
USE AdventureWorks2012;
DENY EXECUTE ON OBJECT::HumanResources.uspUpdateEmployeeHireInfo
TO Recruiting11;
GO
В.Запрет разрешения REFERENCES на представление с CASCADE
В следующем примере запрещается разрешение REFERENCES на столбец BusinessEntityID в представлении HumanResources.vEmployee для пользователя Wanida с CASCADE.
USE AdventureWorks2012;
DENY REFERENCES (BusinessEntityID) ON OBJECT::HumanResources.vEmployee
TO Wanida CASCADE;
GO
См. также
Справочник
GRANT, предоставление разрешений на объект (Transact-SQL)
REVOKE, отмена разрешения (Transact-SQL)
Представления каталога объектов (Transact-SQL)
sys.fn_builtin_permissions (Transact-SQL)
HAS_PERMS_BY_NAME (Transact-SQL)
sys.fn_my_permissions (Transact-SQL)
Основные понятия
Разрешения (компонент Database Engine)