DENY, запрет разрешений на участника базы данных (Transact-SQL)

Запрещает разрешения, предоставленные пользователю базы данных, роли базы данных или роли приложения.

Значок ссылки на разделСинтаксические обозначения в Transact-SQL

Синтаксис

DENY permission [ ,...n ]  
    ON 
    {  [ USER :: database_user ]
       | [ ROLE :: database_role ]
       | [ APPLICATION ROLE :: application_role ]
    }
    TO <database_principal> [ ,...n ]
    [ CASCADE ]
        [ AS <database_principal> ]

<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
    Обозначает разрешение, которое можно запретить для участника базы данных. Список разрешений см. в подразделе «Примечания» далее в этом разделе.

  • ПОЛЬЗОВАТЕЛЬ :: database_user
    Указывает класс и имя пользователя, для которых запрещается разрешение. Требуется квалификатор области (::).

  • РОЛЬ :: database_role
    Указывает класс и имя роли, для которой запрещается разрешение. Требуется квалификатор области (::).

  • APPLICATION ROLE :: application_role
    Указывает класс и имя роли приложения, для которой запрещается разрешение. Требуется квалификатор области (::).

  • 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
    Указывает пользователя базы данных, не сопоставленного с участником уровня сервера.

Замечания

Разрешения пользователя базы данных

Пользователь базы данных — это защищаемый объект уровня базы данных, содержащийся в базе данных, являющейся родительским элементом в иерархии разрешений. Наиболее специфичные и ограниченные разрешения, которые можно запретить для пользователя базы данных, перечислены в следующей таблице наряду с общими разрешениями, неявно их содержащими.

Разрешение пользователя базы данных

Содержится в разрешении пользователя базы данных

Содержится в разрешении базы данных

CONTROL

CONTROL

CONTROL

IMPERSONATE

CONTROL

CONTROL

ALTER

CONTROL

ALTER ANY USER

VIEW DEFINITION

CONTROL

VIEW DEFINITION

Разрешения роли базы данных

Роль базы данных — это защищаемый объект уровня базы данных, содержащийся в базе данных, являющейся родительским элементом в иерархии разрешений. Наиболее специфичные и ограниченные разрешения, которые можно запретить для роли базы данных, перечислены в следующей таблице наряду с общими разрешениями, неявно их содержащими.

Разрешение роли базы данных

Содержится в разрешении роли базы данных

Содержится в разрешении базы данных

CONTROL

CONTROL

CONTROL

TAKE OWNERSHIP

CONTROL

CONTROL

ALTER

CONTROL

ALTER ANY ROLE

VIEW DEFINITION

CONTROL

VIEW DEFINITION

Разрешения роли приложения

Роль приложения — это защищаемый объект уровня базы данных, содержащийся в базе данных, являющейся родительским элементом в иерархии разрешений. Наиболее специфичные и ограниченные разрешения, которые можно запретить для роли приложения, перечислены в следующей таблице наряду с общими разрешениями, неявно их содержащими.

Разрешение роли приложения

Содержится в разрешении роли приложения

Содержится в разрешении базы данных

CONTROL

CONTROL

CONTROL

ALTER

CONTROL

ALTER ANY APPLICATION ROLE

VIEW DEFINITION

CONTROL

VIEW DEFINITION

Разрешения

Требуется разрешение CONTROL для указанного участника или разрешение, неявно включающее в себя разрешение CONTROL.

Объекты, получившие разрешение CONTROL для базы данных, такие как члены предопределенной роли базы данных db_owner, могут запрещать любое разрешение для любого защищаемого объекта базы данных.

Примеры

А. Запрет разрешения CONTROL одному пользователю для другого

Следующий пример отклоняет разрешение CONTROL от пользователя Wanida базы данных AdventureWorks2008R2 к пользователю RolandX.

USE AdventureWorks2008R2;
DENY CONTROL ON USER::Wanida TO RolandX;
GO

Б. Запрет разрешения VIEW DEFINITION от роли к пользователю, которому оно было предоставлено параметром GRANT OPTION

Следующий пример запрещает разрешение VIEW DEFINITION для роли SammamishParking базы данных AdventureWorks2008R2 пользователю базы данных JinghaoLiu. Используется параметр CASCADE, поскольку пользователю JinghaoLiu было предоставлено разрешение VIEW DEFINITION параметром WITH GRANT OPTION.

USE AdventureWorks2008R2;
DENY VIEW DEFINITION ON ROLE::SammamishParking 
    TO JinghaoLiu CASCADE;
GO

В. Запрет разрешения IMPERSONATE от пользователя к роли приложения

Следующий пример запрещает разрешение IMPERSONATE для пользователя HamithaL базы данных AdventureWorks2008R2 роли приложения AccountsPayable17.

USE AdventureWorks2008R2;
DENY IMPERSONATE ON USER::HamithaL TO AccountsPayable17;
GO