DENY (Transact-SQL)

Запрещает разрешение для участника. Предотвращает наследование разрешения участником через его членство в группе или роли.

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

Синтаксис

Simplified syntax for DENY
DENY { ALL [ PRIVILEGES ] }
      | permission [ ( column [ ,...n ] ) ] [ ,...n ]
      [ ON [ class :: ] securable ] TO principal [ ,...n ] 
      [ CASCADE] [ AS principal ]

Аргументы

  • ALL
    Этот параметр запрещает не все возможные разрешения. Его использование эквивалентно запрету следующих разрешений.

    • Если защищаемым объектом является база данных, аргумент ALL относится к разрешениям BACKUP DATABASE, BACKUP LOG, CREATE DATABASE, CREATE DEFAULT, CREATE FUNCTION, CREATE PROCEDURE, CREATE RULE, CREATE TABLE и CREATE VIEW.

    • Если защищаемым объектом является скалярная функция, аргумент ALL относится к разрешениям EXECUTE и REFERENCES.

    • Если защищаемым объектом является функция с табличным значением, аргумент ALL относится к разрешениям DELETE, INSERT, REFERENCES, SELECT и UPDATE.

    • Если защищаемая сущность является хранимой процедурой, аргумент ALL подразумевает разрешение EXECUTE.

    • Если защищаемым объектом является таблица, аргумент ALL относится к разрешениям DELETE, INSERT, REFERENCES, SELECT и UPDATE.

    • Если защищаемым объектом является представление, аргумент ALL относится к разрешениям DELETE, INSERT, REFERENCES, SELECT и UPDATE.

    ПримечаниеПримечание

    Синтаксис DENY ALL является устаревшим. В будущей версии Microsoft SQL Server этот компонент будет удален. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется. Вместо этого отменяйте определенные разрешения.

  • PRIVILEGES
    Включено для обеспечения совместимости с требованиями ISO. Не изменяет поведение параметра ALL.

  • permission
    Имя разрешения. Допустимые сопоставления разрешений защищаемых объектов описаны в разделах, перечисленных ниже.

  • column
    Указывает имя столбца в таблице, на который запрещаются разрешения. Необходимы скобки ().

  • class
    Указывает класс защищаемого объекта, на который запрещается разрешение. Квалификатор области :: является обязательным.

  • securable
    Указывает защищаемый объект, на который запрещается разрешение.

  • TO principal
    Имя участника. Участники, у которых может запрещаться разрешение на защищаемый объект, в зависимости от самого защищаемого объекта. Допустимые сочетания приведены в указанных ниже разделах по конкретным защищаемым объектам.

  • CASCADE
    Обозначает, что разрешение запрещается для указанного участника и всех других участников, которым этот участник предоставил разрешение. Требуется, если участник имеет разрешение с параметром GRANT OPTION.

  • AS principal
    Указывает участника, от которого участник, выполняющий данный запрос, наследует право на запрет разрешения.

Замечания

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

Инструкция DENY завершится ошибкой, если не указан аргумент CASCADE при отзыве разрешения у участника, которому это разрешение было предоставлено с параметром GRANT OPTION.

Системная хранимая процедура sp_helprotect сообщает о разрешениях на доступ к защищаемым объектам уровня базы данных.

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

Запрет (DENY) уровня таблицы имеет меньший приоритет, чем разрешение (GRANT) уровня столбца. Эта несовместимость в иерархии разрешений предусмотрена в целях гарантии обратной совместимости. В будущем выпуске она будет устранена.

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

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

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

При запрете разрешения CONTROL SERVER неявно запрещается разрешение CONNECT SQL на этот сервер. Участник, для которого запрещено разрешение CONTROL SERVER на сервер, не сможет подключиться к этому серверу.

Разрешения

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

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

Примеры

В следующей таблице перечислены защищаемые объекты и разделы, в которых описывается синтаксис инструкций по работе с ними.

Роль приложения

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

Сборка

Запрещение (DENY) разрешений на сборки (Transact-SQL)

Асимметричный ключ

DENY, запрет разрешений на асимметричный ключ (Transact-SQL)

Группа доступности

DENY (отмена) разрешений группы доступности (Transact-SQL)

Сертификат

DENY, запрет разрешений на сертификат (Transact-SQL)

Контракт

DENY, запрет разрешений компонента Service Broker (Transact-SQL)

База данных

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

Конечная точка

DENY, запрет разрешений на конечную точку (Transact-SQL)

Полнотекстовый каталог

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

Полнотекстовый список стоп-слов

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

Функция

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

Имя входа

DENY, запрет разрешения участника на уровне сервера (Transact-SQL)

Тип сообщений

DENY, запрет разрешений компонента Service Broker (Transact-SQL)

Объект

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

Очередь

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

Привязка удаленной службы

DENY, запрет разрешений компонента Service Broker (Transact-SQL)

Роль

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

Маршрут

DENY, запрет разрешений компонента Service Broker (Transact-SQL)

Схема

DENY, запрет разрешений на схему (Transact-SQL)

Список свойств поиска

Разрешение на список свойств поиска DENY (Transact-SQL)

Сервер

DENY, запрет разрешений на сервере (Transact-SQL)

Служба

DENY, запрет разрешений компонента Service Broker (Transact-SQL)

Хранимая процедура

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

Симметричный ключ

DENY, запрет разрешений на симметричный ключ (Transact-SQL)

Синоним

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

Системные объекты

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

Таблица

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

Тип

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

Пользователь

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

Представление

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

Коллекция XML-схем

DENY, запрет разрешения на коллекцию XML-схем (Transact-SQL)

См. также

Справочник

REVOKE (Transact-SQL)

sp_addlogin (Transact-SQL)

sp_adduser (Transact-SQL)

sp_changedbowner (Transact-SQL)

sp_dropuser (Transact-SQL)

sp_helprotect (Transact-SQL)

sp_helpuser (Transact-SQL)