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 можно задавать в предложении разрешений или после имени защищаемого объекта.

    ПредупреждениеВнимание!

    Запрет (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 в базе данных AdventureWorks2008R2.

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

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

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

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

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

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

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