REVOKE (Transact-SQL)

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

Удаляет разрешение, выданное или запрещенное ранее.

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

Синтаксис

-- Syntax for SQL Server and Azure SQL Database  
  
-- Simplified syntax for REVOKE  
REVOKE [ GRANT OPTION FOR ]  
      {   
        [ ALL [ PRIVILEGES ] ]  
        |  
                permission [ ( column [ ,...n ] ) ] [ ,...n ]  
      }  
      [ ON [ class :: ] securable ]   
      { TO | FROM } principal [ ,...n ]   
      [ CASCADE] [ AS principal ]  
-- Syntax for Azure Synapse Analytics and Parallel Data Warehouse and Microsoft Fabric
  
REVOKE   
    <permission> [ ,...n ]  
    [ ON [ <class_type> :: ] securable ]   
    [ FROM | TO ] principal [ ,...n ]  
    [ CASCADE ]  
[;]  
  
<permission> ::=  
{ see the tables below }  
  
<class_type> ::=  
{  
      LOGIN  
    | DATABASE  
    | OBJECT  
    | ROLE  
    | SCHEMA  
    | USER  
}  

Аргументы

GRANT OPTION FOR
Указывает, что возможность предоставлять указанное разрешение будет отменена. Данный аргумент необходим при использовании аргумента CASCADE.

Внимание

Если участник обладает указанным разрешением без параметра GRANT, будет отменено само разрешение.

ВСЕ
Область применения: SQL Server 2008 (10.0.x) и более поздних версий

Этот параметр не отменяет все возможные разрешения. Указание аргумента 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.

Примечание.

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

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

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

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

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

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

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

CASCADE
Указывает, что разрешение также отменяется и у участников, получивших доступ через текущего участника. Аргумент CASCADE необходимо использовать совместно с аргументом GRANT OPTION FOR.

Внимание

Каскадная отмена разрешения, предоставленного с помощью параметра WITH GRANT OPTION, приведет к отмене разрешений GRANT и DENY для этого разрешения.

AS principal
Используйте предложение AS участника для указания того, что вы отменяете разрешение, которое было предоставлено участником, отличным от вас. Предположим, что пользователь Мария — это участник 12, а пользователь Павел — участник 15. Мария и Павел предоставляют пользователю Степану то же разрешение. В таблице sys.database_permissions разрешения будут указаны дважды, но у каждого из них будет разное значение grantor_prinicpal_id. Мария может отменить разрешение с помощью предложения AS RAUL, чтобы удалить право Павла на предоставление разрешения.

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

Замечания

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

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

Предоставление разрешения удаляет DENY или REVOKE для этого разрешения на данный защищаемый объект. Если то же разрешение запрещено для более высокой области действия, которая содержит данный защищаемый объект, то DENY имеет более высокий приоритет. Однако отмена разрешения на более высоком уровне не имеет более высокого приоритета.

Внимание

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

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

Если при отзыве разрешения участником, получившем его с помощью аргумента GRANT OPTION, не был задан аргумент CASCADE, выполнение инструкции REVOKE завершается сбоем.

Разрешения

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

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

Синтаксис, зависящий от защищаемых объектов

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

Защищаемый объект Раздел
Роль приложения ОТМЕНА разрешений субъекта базы данных (Transact-SQL)
Сборка РАЗРЕШЕНИЯ НА СБОРКУ REVOKE (Transact-SQL)
Асимметричный ключ ОТМЕНА асимметричных разрешений ключа (Transact-SQL)
Группа доступности РАЗРЕШЕНИЯ группы доступности (Transact-SQL)
Сертификат РАЗРЕШЕНИЯ ОТЗЫВА сертификатов (Transact-SQL)
Contract ОТМЕНА разрешений компонента Service Broker (Transact-SQL)
База данных REVOKE Database Permissions (Transact-SQL)
Конечная точка REVOKE Endpoint Permissions (Transact-SQL)
Учетные данные для базы данных REVOKE, отмена учетных данных для базы данных (Transact-SQL)
Полнотекстовый каталог ОТМЕНА разрешений полнотекстового текста (Transact-SQL)
Полнотекстовый список стоп-слов ОТМЕНА разрешений полнотекстового текста (Transact-SQL)
Function РАЗРЕШЕНИЯ ОБЪЕКТА REVOKE (Transact-SQL)
Имя входа REVOKE Server Principal Permissions (Transact-SQL)
Тип сообщения ОТМЕНА разрешений компонента Service Broker (Transact-SQL)
Object РАЗРЕШЕНИЯ ОБЪЕКТА REVOKE (Transact-SQL)
Queue РАЗРЕШЕНИЯ ОБЪЕКТА REVOKE (Transact-SQL)
Привязка удаленной службы ОТМЕНА разрешений компонента Service Broker (Transact-SQL)
Роль ОТМЕНА разрешений субъекта базы данных (Transact-SQL)
Маршрут ОТМЕНА разрешений компонента Service Broker (Transact-SQL)
Схема ОТМЕНА разрешений схемы (Transact-SQL)
Список свойств поиска ОТМЕНА разрешений списка свойств поиска (Transact-SQL)
Сервер REVOKE, отмена разрешений сервера (Transact-SQL)
Service ОТМЕНА разрешений компонента Service Broker (Transact-SQL)
Хранимая процедура РАЗРЕШЕНИЯ ОБЪЕКТА REVOKE (Transact-SQL)
Симметричный ключ ОТМЕНА разрешений симметричного ключа (Transact-SQL)
Синоним РАЗРЕШЕНИЯ ОБЪЕКТА REVOKE (Transact-SQL)
Системные объекты REVOKE System Object Permissions (Transact-SQL)
Таблица РАЗРЕШЕНИЯ ОБЪЕКТА REVOKE (Transact-SQL)
Тип РАЗРЕШЕНИЯ ТИПА REVOKE (Transact-SQL)
User ОТМЕНА разрешений субъекта базы данных (Transact-SQL)
Представления РАЗРЕШЕНИЯ ОБЪЕКТА REVOKE (Transact-SQL)
Коллекция схем XML REVOKE XML Schema Collection Permissions (Transact-SQL)

Примеры

А. Предоставление и отмена разрешения

Применимо к: SQL Server, база данных SQL

В следующем примере создается схема, пользователь автономной базы данных и новая роль в пользовательской базе. Пользователю выдается роль, которой назначается разрешение SELECT для схемы, после чего это разрешение роли удаляется (REVOKE).

CREATE SCHEMA Sales;  
GO
CREATE USER Joe without login;
GO
CREATE ROLE Vendors;
GO
ALTER ROLE Vendors ADD MEMBER Joe; 
GO
GRANT SELECT ON SCHEMA :: Sales TO Vendors;
GO
REVOKE SELECT ON SCHEMA :: Sales TO Vendors;
GO
 

См. также

Иерархия разрешений (ядро СУБД)
DENY (Transact-SQL)
GRANT (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)