DENY (Transact-SQL)DENY (Transact-SQL)

ОБЛАСТЬ ПРИМЕНЕНИЯ: даSQL Server даБаза данных SQL Azure даAzure Synapse Analytics (хранилище данных SQL) даParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure Synapse Analytics (SQL DW) yesParallel Data Warehouse

Запрещает разрешение для участника.Denies a permission to a principal. Предотвращает наследование разрешения участником через его членство в группе или роли.Prevents that principal from inheriting the permission through its group or role memberships. DENY имеет приоритет над всеми разрешениями, но не применяется к владельцам объектов или членам с предопределенной ролью сервера sysadmin.DENY takes precedence over all permissions, except that DENY does not apply to object owners or members of the sysadmin fixed server role. Примечание по безопасности. Членам предопределенной роли сервера sysadmin и владельцам объектов не может быть отказано в разрешениях.Security Note Members of the sysadmin fixed server role and object owners cannot be denied permissions."

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

СинтаксисSyntax

-- 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 SQL Data Warehouse and Parallel Data Warehouse  
  
DENY   
    <permission> [ ,...n ]  
    [ ON [ <class_> :: ] securable ]   
    TO principal [ ,...n ]  
    [ CASCADE ]  
[;]  
  
<permission> ::=  
{ see the tables below }  
  
<class> ::=  
{  
      LOGIN  
    | DATABASE  
    | OBJECT  
    | ROLE  
    | SCHEMA  
    | USER  
}  

АргументыArguments

ALLALL
Этот параметр запрещает не все возможные разрешения.This option does not deny all possible permissions. Его использование эквивалентно запрету следующих разрешений.Denying ALL is equivalent to denying the following permissions.

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

  • Если защищаемым объектом является скалярная функция, аргумент ALL относится к разрешениям EXECUTE и REFERENCES.If the securable is a scalar function, ALL means EXECUTE and REFERENCES.

  • Если защищаемым объектом является функция с табличным значением, аргумент ALL относится к разрешениям DELETE, INSERT, REFERENCES, SELECT и UPDATE.If the securable is a table-valued function, ALL means DELETE, INSERT, REFERENCES, SELECT, and UPDATE.

  • Если защищаемая сущность является хранимой процедурой, аргумент ALL подразумевает разрешение EXECUTE.If the securable is a stored procedure, ALL means EXECUTE.

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

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

Примечание

Синтаксис DENY ALL является устаревшим.The DENY ALL syntax is deprecated. Этот компонент находится в режиме обслуживания и может быть удален в будущей версии Microsoft SQL Server.This feature is in maintenance mode and may be removed in a future version of Microsoft SQL Server. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется.Avoid using this feature in new development work, and plan to modify applications that currently use this feature. Вместо этого отменяйте определенные разрешения.Deny specific permissions instead.

PRIVILEGESPRIVILEGES
Включено для обеспечения совместимости с требованиями ISO.Included for ISO compliance. Не изменяет работу ALL.Does not change the behavior of ALL.

permissionpermission
Имя разрешения.Is the name of a permission. Допустимые сопоставления разрешений защищаемых объектов описаны в разделах, перечисленных ниже.The valid mappings of permissions to securables are described in the sub-topics listed below.

columncolumn
Указывает имя столбца в таблице, на который запрещаются разрешения.Specifies the name of a column in a table on which permissions are being denied. Необходимы скобки ().The parentheses () are required.

classclass
Указывает класс защищаемого объекта, на который запрещается разрешение.Specifies the class of the securable on which the permission is being denied. Квалификатор области :: является обязательным.The scope qualifier :: is required.

securablesecurable
Указывает защищаемый объект, на который запрещается разрешение.Specifies the securable on which the permission is being denied.

TO principalTO principal
Имя участника.Is the name of a principal. Участники, у которых может запрещаться разрешение на защищаемый объект, в зависимости от самого защищаемого объекта.The principals to which permissions on a securable can be denied vary, depending on the securable. Допустимые сочетания приведены в указанных ниже разделах по конкретным защищаемым объектам.See the securable-specific topics listed below for valid combinations.

CASCADECASCADE
Обозначает, что разрешение запрещается для указанного участника и всех других участников, которым этот участник предоставил разрешение.Indicates that the permission is denied to the specified principal and to all other principals to which the principal granted the permission. Требуется, если участник имеет разрешение с параметром GRANT OPTION.Required when the principal has the permission with GRANT OPTION.

AS principalAS principal
Указывает участника, от которого участник, выполняющий данный запрос, получает право на запрещение разрешения.Specifies the principal from which the principal executing this query derives its right to deny the permission. Используйте предложение субъекта AS, чтобы указать, что субъект, записанный как объект, отзывающий разрешение, должен быть субъектом, отличным от пользователя, выполняющего инструкцию.Use the AS principal clause to indicate that the principal recorded as the denier of the permission should be a principal other than the person executing the statement. Предположим, что пользователь Мария — это участник 12, пользователь Павел — участник 15.For example, presume that user Mary is principal_id 12 and user Raul is principal 15. Мария выполняет DENY SELECT ON OBJECT::X TO Steven WITH GRANT OPTION AS Raul;. В таблице sys.database_permissions для параметра grantor_prinicpal_id инструкции отмены указано значение 15 (Павел), хотя инструкция была выполнена пользователем 12 (Мария).Mary executes DENY SELECT ON OBJECT::X TO Steven WITH GRANT OPTION AS Raul; Now the sys.database_permissions table will indicate that the grantor_prinicpal_id of the deny statement was 15 (Raul) even though the statement was actually executed by user 13 (Mary).

AS в данной инструкции не дает возможность олицетворять другого пользователя.The use of AS in this statement does not imply the ability to impersonate another user.

RemarksRemarks

Полный синтаксис инструкции DENY достаточно сложен.The full syntax of the DENY statement is complex. Предыдущая диаграмма синтаксиса была упрощена, чтобы продемонстрировать ее структуру.The syntax diagram above was simplified to draw attention to its structure. Полный синтаксис запрета разрешений на конкретные защищаемые объекты описан в разделах, перечисленных ниже.Complete syntax for denying permissions on specific securables is described in the topics listed below.

Инструкция DENY завершится ошибкой, если не указан аргумент CASCADE при отзыве разрешения у участника, которому это разрешение было предоставлено с параметром GRANT OPTION.DENY will fail if CASCADE is not specified when denying a permission to a principal that was granted that permission with GRANT OPTION specified.

Системная хранимая процедура sp_helprotect сообщает о разрешениях на доступ к защищаемым объектам уровня базы данных.The sp_helprotect system stored procedure reports permissions on a database-level securable.

Внимание!

Запрет (DENY) уровня таблицы имеет меньший приоритет, чем разрешение (GRANT) уровня столбца.A table-level DENY does not take precedence over a column-level GRANT. Эта несовместимость в иерархии разрешений предусмотрена в целях гарантии обратной совместимости.This inconsistency in the permissions hierarchy has been preserved for the sake of backward compatibility. В будущем выпуске она будет удалена.It will be removed in a future release.

Внимание!

При запрете разрешения CONTROL на базу данных неявно запрещается разрешение CONNECT на эту базу данных.Denying CONTROL permission on a database implicitly denies CONNECT permission on the database. Участник, для которого запрещено разрешение CONTROL на базу данных, не сможет подключиться к этой базе данных.A principal that is denied CONTROL permission on a database will not be able to connect to that database.

Внимание!

При запрете разрешения CONTROL SERVER неявно запрещается разрешение CONNECT SQL на этот сервер.Denying CONTROL SERVER permission implicitly denies CONNECT SQL permission on the server. Участник, для которого запрещено разрешение CONTROL SERVER на сервер, не сможет подключиться к этому серверу.A principal that is denied CONTROL SERVER permission on a server will not be able to connect to that server.

РазрешенияPermissions

Участник, указанный параметром AS, должен иметь либо разрешение CONTROL, либо разрешение более высокого уровня, включающее в себя разрешение на защищаемый объект.The caller (or the principal specified with the AS option) must have either CONTROL permission on the securable, or a higher permission that implies CONTROL permission on the securable. При использовании параметра AS указанный участник должен быть владельцем защищаемого объекта, разрешение на который запрещается.If using the AS option, the specified principal must own the securable on which a permission is being denied.

Участник, получивший разрешение CONTROL SERVER, например член предопределенной роли сервера sysadmin, может запретить любое разрешение на любой защищаемый объект сервера.Grantees of CONTROL SERVER permission, such as members of the sysadmin fixed server role, can deny any permission on any securable in the server. Участник, получивший разрешение CONTROL на базу данных, например член предопределенной роли базы данных db_owner, может запретить любое разрешение на любой защищаемый объект в базе данных.Grantees of CONTROL permission on the database, such as members of the db_owner fixed database role, can deny any permission on any securable in the database. Участник, получивший разрешение CONTROL на схему, может запретить любое разрешение на любой защищаемый объект в этой схеме.Grantees of CONTROL permission on a schema can deny any permission on any object in the schema. При использовании предложения AS указанный участник должен быть владельцем защищаемого объекта, разрешения на который для него запрещаются.If the AS clause is used, the specified principal must own the securable on which permissions are being denied.

ПримерыExamples

В следующей таблице перечислены защищаемые объекты и разделы, в которых описывается синтаксис инструкций по работе с ними.The following table lists the securables and the topics that describe the securable-specific syntax.

Роль приложенияApplication Role DENY, запрет разрешений на участника базы данных (Transact-SQL)DENY Database Principal Permissions (Transact-SQL)
СборкаAssembly DENY, запрет разрешений на сборку (Transact-SQL)DENY Assembly Permissions (Transact-SQL)
Асимметричный ключAsymmetric Key DENY, запрет разрешений на асимметричный ключ (Transact-SQL)DENY Asymmetric Key Permissions (Transact-SQL)
Группа доступностиAvailability Group DENY, запрет разрешений на группу доступности (Transact-SQL)DENY Availability Group Permissions (Transact-SQL)
СертификатCertificate DENY, запрет разрешений на сертификат (Transact-SQL)DENY Certificate Permissions (Transact-SQL)
КонтрактContract DENY, запрет разрешений на Service Broker (Transact-SQL)DENY Service Broker Permissions (Transact-SQL)
База данныхDatabase DENY, запрет разрешений на базу данных (Transact-SQL)DENY Database Permissions (Transact-SQL)
Учетные данные для базы данныхDatabase Scoped Credential DENY, запрет разрешений на учетные данные для базы данных (Transact-SQL)DENY Database Scoped Credential (Transact-SQL)
Конечная точкаEndpoint DENY, запрет разрешений на конечную точку (Transact-SQL)DENY Endpoint Permissions (Transact-SQL)
Полнотекстовый каталогFull-Text Catalog DENY, запрет разрешений на полнотекстовые объекты (Transact-SQL)DENY Full-Text Permissions (Transact-SQL)
Полнотекстовый список стоп-словFull-Text Stoplist DENY, запрет разрешений на полнотекстовые объекты (Transact-SQL)DENY Full-Text Permissions (Transact-SQL)
КомпонентFunction DENY, запрет разрешений на объект (Transact-SQL)DENY Object Permissions (Transact-SQL)
Имя входаLogin DENY, запрет разрешений участника на уровне сервера (Transact-SQL)DENY Server Principal Permissions (Transact-SQL)
Тип сообщенийMessage Type DENY, запрет разрешений на Service Broker (Transact-SQL)DENY Service Broker Permissions (Transact-SQL)
ОбъектObject DENY, запрет разрешений на объект (Transact-SQL)DENY Object Permissions (Transact-SQL)
ОчередьQueue DENY, запрет разрешений на объект (Transact-SQL)DENY Object Permissions (Transact-SQL)
Привязка удаленной службыRemote Service Binding DENY, запрет разрешений на Service Broker (Transact-SQL)DENY Service Broker Permissions (Transact-SQL)
РольRole DENY, запрет разрешений на участника базы данных (Transact-SQL)DENY Database Principal Permissions (Transact-SQL)
МаршрутRoute DENY, запрет разрешений на Service Broker (Transact-SQL)DENY Service Broker Permissions (Transact-SQL)
схемаSchema DENY, запрет разрешений на схему (Transact-SQL)DENY Schema Permissions (Transact-SQL)
Список свойств поискаSearch Property List DENY, запрет разрешений на список свойств поиска (Transact-SQL)DENY Search Property List Permissions (Transact-SQL)
СерверServer DENY, запрет разрешений на сервере (Transact-SQL)DENY Server Permissions (Transact-SQL)
СлужбаService DENY, запрет разрешений на Service Broker (Transact-SQL)DENY Service Broker Permissions (Transact-SQL)
Хранимая процедураStored Procedure DENY, запрет разрешений на объект (Transact-SQL)DENY Object Permissions (Transact-SQL)
Симметричный ключSymmetric Key DENY, запрет разрешений на симметричный ключ (Transact-SQL)DENY Symmetric Key Permissions (Transact-SQL)
СинонимSynonym DENY, запрет разрешений на объект (Transact-SQL)DENY Object Permissions (Transact-SQL)
Системные объектыSystem Objects DENY, запрет разрешений на системный объект (Transact-SQL)DENY System Object Permissions (Transact-SQL)
ТаблицаTable DENY, запрет разрешений на объект (Transact-SQL)DENY Object Permissions (Transact-SQL)
ТипType DENY, запрет разрешений на тип (Transact-SQL)DENY Type Permissions (Transact-SQL)
ПользовательUser DENY, запрет разрешений на участника базы данных (Transact-SQL)DENY Database Principal Permissions (Transact-SQL)
ПредставлениеView DENY, запрет разрешений на объект (Transact-SQL)DENY Object Permissions (Transact-SQL)
Коллекция схем XMLXML Schema Collection DENY, запрет разрешений на коллекцию XML-схем (Transact-SQL)DENY XML Schema Collection Permissions (Transact-SQL)

См. также:See Also

REVOKE (Transact-SQL) REVOKE (Transact-SQL)
sp_addlogin (Transact-SQL) sp_addlogin (Transact-SQL)
sp_adduser (Transact-SQL) sp_adduser (Transact-SQL)
sp_changedbowner (Transact-SQL) sp_changedbowner (Transact-SQL)
sp_dropuser (Transact-SQL) sp_dropuser (Transact-SQL)
sp_helprotect (Transact-SQL) sp_helprotect (Transact-SQL)
sp_helpuser (Transact-SQL)sp_helpuser (Transact-SQL)