DENY (Transact-SQL)

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

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

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

Syntax

Синтаксис для базы данных SQL Server, База данных SQL Azure и Fabric SQL

 
-- 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 }  

Синтаксис для Azure Synapse Analytics и параллельного хранилища данных и хранилища Microsoft Fabric

DENY   
    <permission> [ ,...n ]  
    [ ON [ <class_> :: ] securable ]   
    TO principal [ ,...n ]  
    [ CASCADE ]  
[;]  
  
<permission> ::=  
{ see the tables below }  
  
<class> ::=  
{  
      LOGIN  
    | DATABASE  
    | OBJECT  
    | ROLE  
    | SCHEMA  
    | USER  
}  

Arguments

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

  • Если защищаемая — база данных, ВСЕ означают BACKUPDATABASE, BACKUP LOG, CREATE DATABASE, , CREATE DEFAULTCREATE FUNCTION, CREATE PROCEDURE, CREATE RULECREATE TABLEи CREATE VIEW.

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

  • Если закрепляемая функция — это функция с таблицным значением, то ALL означает DELETE, INSERT, REFERENCES, SELECT и UPDATE.

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

  • Если защищённая — таблица, то ВСЕ означают DELETE, INSERT, REFERENCES, SELECT и UPDATE.

  • Если закрепляемая — это вид, то ВСЕ означают DELETE, INSERT, REFERENCES, SELECT и UPDATE.

Note

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

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

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

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

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

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

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

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

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

Remarks

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

DENY не сработает, если CASCADE не указан при отказе в разрешении принципалу, которому это разрешение было предоставлено с GRANT указанием ОПЦИИ.

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

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

Caution

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

Caution

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

Caution

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

Permissions

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

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

Examples

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

Securables Syntax
Роль приложения DENY Основные права базы данных (Transact-SQL)
Assembly DENY Разрешения на сборку (Transact-SQL)
Асимметричный ключ DENY Асимметричные разрешения ключей (Transact-SQL)
Группа доступности DENY Доступность Группы разрешений (Transact-SQL)
Certificate DENY Права на сертификаты (Transact-SQL)
Contract DENY Разрешения Service Broker (Transact-SQL)
Database DENY Разрешения базы данных (Transact-SQL)
Учетные данные для базы данных DENY Учетная точка данных (Transact-SQL)
Endpoint DENY Разрешения для конечной точки (Transact-SQL)
Full-Text Каталог DENY Full-Text Разрешения (Transact-SQL)
Full-Text Стоплист DENY Full-Text Разрешения (Transact-SQL)
Function DENY Права на объекты (Transact-SQL)
Login DENY Разрешения учетной записи уровня сервера (Transact-SQL)
Тип сообщения DENY Разрешения Service Broker (Transact-SQL)
Object DENY Права на объекты (Transact-SQL)
Queue DENY Права на объекты (Transact-SQL)
Привязка удаленной службы DENY Разрешения Service Broker (Transact-SQL)
Role DENY Основные права базы данных (Transact-SQL)
Route DENY Разрешения Service Broker (Transact-SQL)
Schema DENY Разрешения на схему (Transact-SQL)
Список свойств поиска DENY Поиск разрешений на списки свойств (Transact-SQL)
Server DENY Разрешения сервера (Transact-SQL)
Service DENY Разрешения Service Broker (Transact-SQL)
Хранимая процедура DENY Права на объекты (Transact-SQL)
Симметричный ключ DENY Симметричные разрешения ключей (Transact-SQL)
Synonym DENY Права на объекты (Transact-SQL)
Системные объекты DENY Разрешения системных объектов (Transact-SQL)
Table DENY Права на объекты (Transact-SQL)
Type DENY Разрешения на введение (Transact-SQL)
User DENY Основные права базы данных (Transact-SQL)
View 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)