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


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)

Участники (компонент Database Engine)

Защищаемые объекты