Поделиться через


DENY, запрет разрешений на объект (Transact-SQL)

Применимо к:SQL ServerБаза данных Azure SQLУправляемый экземпляр Azure SQLБаза данных SQL в предварительной версии Microsoft Fabric

Запрещает разрешения на член класса OBJECT защищаемых объектов. Элементы класса OBJECT: таблицы, представления, функции с табличным значением, хранимые процедуры, расширенные хранимые процедуры, скалярные функции, агрегатные функции, очереди обслуживания и синонимы.

Соглашения о синтаксисе Transact-SQL

Syntax

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  

Arguments

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 или после имени защищаемого объекта.

Caution

Запрет (DENY) уровня таблицы имеет меньший приоритет, чем разрешение (GRANT) уровня столбца. Такая несогласованность в иерархии разрешений сохранена в целях обратной совместимости. В SQL Server такое поведение отличается, если сервер настроен для выполнения с конфигурацией "Common Criteria Compliance Enabled". Но обычно ее следует использовать с осторожностью, а не во всех случаях.

ON [ OBJECT :: ] [ schema_name ] .object_name
Указывает объект, для которого запрещается разрешение. Фраза OBJECT необязательна, если указан аргумент schema_name. Если же она указана, указание квалификатора области (::) обязательно. Если не указан аргумент 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
Указывает пользователя базы данных, не сопоставленного с субъектом серверного уровня.

Remarks

Сведения об объектах доступны через различные представления каталога. Дополнительные сведения см. в разделе Представления каталога объектов (Transact-SQL).

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

Object permission Содержится в разрешении объекта Содержится в разрешении схемы
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
ПРОСМОТР ИЗМЕНЕНИЙ CONTROL ПРОСМОТР ИЗМЕНЕНИЙ
VIEW DEFINITION CONTROL VIEW DEFINITION

Permissions

Необходимо разрешение CONTROL для данного объекта.

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

Examples

В следующих примерах используется база данных AdventureWorks.

A. Запрет разрешения SELECT на таблицу

В следующем примере запрещается разрешение SELECT для пользователя RosaQdM на таблицу Person.Address.

DENY SELECT ON OBJECT::Person.Address TO RosaQdM;  
GO  

B. Запрет разрешения EXECUTE на хранимую процедуру

В следующем примере запрещается разрешение EXECUTE на хранимую процедуру HumanResources.uspUpdateEmployeeHireInfo для роли приложения под названием Recruiting11.

DENY EXECUTE ON OBJECT::HumanResources.uspUpdateEmployeeHireInfo  
    TO Recruiting11;  
GO   

C. Запрет разрешения REFERENCES на представление с CASCADE

В следующем примере запрещается разрешение REFERENCES на столбец BusinessEntityID в представлении HumanResources.vEmployee для пользователя Wanida с CASCADE.

DENY REFERENCES (BusinessEntityID) ON OBJECT::HumanResources.vEmployee   
    TO Wanida CASCADE;  
GO  

See Also

GRANT, предоставление разрешений на объект (Transact-SQL)
РАЗРЕШЕНИЯ ОБЪЕКТА REVOKE (Transact-SQL)
Представления каталога объектов (Transact-SQL)
Разрешения (ядро СУБД)
Субъекты (ядро СУБД)
Securables
sys.fn_builtin_permissions (Transact-SQL)
HAS_PERMS_BY_NAME (Transact-SQL)
sys.fn_my_permissions (Transact-SQL)