DENY (Transact-SQL)

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure конечной точке аналитики платформы Аналитики Azure Synapse Analytics (PDW) в Microsoft Fabric Хранилище в Microsoft Fabric

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

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

Синтаксис

-- Syntax for SQL Server and Azure SQL Database  
  
-- Simplified syntax for DENY  
DENY   { ALL [ PRIVILEGES ] } 
     | <permission>  [ ( column [ ,...n ] ) ] [ ,...n ]  
    [ ON [ <class> :: ] securable ] 
    TO principal [ ,...n ]   
    [ CASCADE] [ AS principal ]  
[;]

<permission> ::=  
{ see the tables below }  
  
<class> ::=  
{ see the tables below }  
-- Syntax for Azure Synapse Analytics and Parallel Data Warehouse and Microsoft Fabric
  
DENY   
    <permission> [ ,...n ]  
    [ ON [ <class_> :: ] securable ]   
    TO principal [ ,...n ]  
    [ CASCADE ]  
[;]  
  
<permission> ::=  
{ see the tables below }  
  
<class> ::=  
{  
      LOGIN  
    | DATABASE  
    | OBJECT  
    | ROLE  
    | SCHEMA  
    | USER  
}  

Аргументы

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

  • Если защищаемым объектом является база данных, аргумент 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 является устаревшим. Эта функция будет удалена в будущей версии SQL Server. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется. Вместо этого запретить определенные разрешения.

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

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

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

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

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

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

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

AS principal
Указывает участника, от которого участник, выполняющий данный запрос, получает право на запрещение разрешения. Используйте предложение субъекта AS, чтобы указать, что субъект, записанный как объект, отзывающий разрешение, должен быть субъектом, отличным от пользователя, выполняющего инструкцию. Предположим, что пользователь Мария — это участник 12, пользователь Павел — участник 15. Мэри выполняет DENY SELECT ON OBJECT::X TO Steven WITH GRANT OPTION AS Raul; теперь таблицу sys.database_permissions будет указывать, что grantor_principal_id заявления запрета было 15 (Raul), несмотря на то, что заявление было на самом деле выполнено пользователем 13 (Мэри).

AS в данной инструкции не дает возможность олицетворять другого пользователя.

Замечания

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

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

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

В Microsoft Fabric не удается явно выполнить CREATE USER. При выполнении GRANT или DENY пользователь будет автоматически создан.

Внимание

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

Внимание

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

Внимание

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

Разрешения

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

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

Примеры

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

Защищаемые объекты Синтаксис
Роль приложения DENY Database Principal Permissions (Transact-SQL)
Сборка Deny Assembly Permissions (Transact-SQL)
Асимметричный ключ Deny Asymmetric Key Permissions (Transact-SQL)
Группа доступности Запрет разрешений группы доступности (Transact-SQL)
Сертификат Deny Certificate Permissions (Transact-SQL)
Contract DENY Service Broker Permissions (Transact-SQL)
База данных DENY Database Permissions (Transact-SQL)
Учетные данные для базы данных DENY, запрет разрешений на учетные данные для базы данных (Transact-SQL)
Конечная точка Deny Endpoint Permissions (Transact-SQL)
Полнотекстовый каталог Deny Full-Text Permissions (Transact-SQL)
Полнотекстовый список стоп-слов Deny Full-Text Permissions (Transact-SQL)
Function Deny Object Permissions (Transact-SQL)
Имя входа Deny Server Principal Permissions (Transact-SQL)
Тип сообщения DENY Service Broker Permissions (Transact-SQL)
Object Deny Object Permissions (Transact-SQL)
Queue Deny Object Permissions (Transact-SQL)
Привязка удаленной службы DENY Service Broker Permissions (Transact-SQL)
Роль DENY Database Principal Permissions (Transact-SQL)
Маршрут DENY Service Broker Permissions (Transact-SQL)
Схема Deny Schema Permissions (Transact-SQL)
Список свойств поиска Deny Search Property List Permissions (Transact-SQL)
Сервер DENY, запрет разрешений на сервере (Transact-SQL)
Service DENY Service Broker Permissions (Transact-SQL)
Хранимая процедура Deny Object Permissions (Transact-SQL)
Симметричный ключ Deny Symmetric Key Permissions (Transact-SQL)
Синоним Deny Object Permissions (Transact-SQL)
Системные объекты DENY System Object Permissions (Transact-SQL)
Таблица Deny Object Permissions (Transact-SQL)
Тип Разрешения типа DENY (Transact-SQL)
User DENY Database Principal Permissions (Transact-SQL)
Представления Deny Object Permissions (Transact-SQL)
Коллекция схем XML Deny XML Schema Collection Permissions (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)