Поделиться через


REVOKE, отмена разрешения (Transact-SQL)

Отменяет разрешения на таблицу, представление, функцию, возвращающую табличное значение, хранимую процедуру, расширенную хранимую процедуру, скалярную функцию, агрегатную функцию, очередь обслуживания или синоним.

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

Синтаксис

REVOKE [ GRANT OPTION FOR ] <permission> [ ,...n ] ON 
    [ OBJECT :: ][ schema_name ]. object_name [ ( column [ ,...n ] ) ]
        { FROM | TO } <database_principal> [ ,...n ] 
    [ CASCADE ]
    [ AS <database_principal> ]

<permission> ::=
    ALL [ PRIVILEGES ] | permission [ ( column [ ,...n ] ) ]

<database_principal> ::= 
        Database_user 
    | Database_role 
    | Application_role 
    | Database_user_mapped_to_Windows_User 
    | Database_user_mapped_to_Windows_Group 
    | Database_user_mapped_to_certificate 
    | Database_user_mapped_to_asymmetric_key 
    | Database_user_with_no_login    

Аргументы

  • permission
    Указывает разрешение, которое может быть отменено для содержащегося в схеме объекта. Список разрешений см. в подразделе «Примечания» далее в этом разделе.

  • ALL
    Отмена ALL не отменяет все возможные разрешения. Отмена ALL эквивалентна отмене всех разрешений ANSI-92, применимых к указанному объекту. Значение ALL различается для разных типов объектов

    Разрешения на скалярные функции: EXECUTE, REFERENCES.

    Разрешения на возвращающие табличное значение функции: DELETE, INSERT, REFERENCES, SELECT, UPDATE.

    Разрешения на хранимые процедуры: EXECUTE.

    Разрешения на таблицы: DELETE, INSERT, REFERENCES, SELECT, UPDATE.

    Разрешения на представления: DELETE, INSERT, REFERENCES, SELECT, UPDATE.

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

  • column
    Указывает имя столбца в таблице, представлении или функции, возвращающей табличное значение, для которого отменяется разрешение. Круглые скобки ( ) обязательны. Для столбца можно запрещать только разрешения SELECT, REFERENCES и UPDATE. Аргумент column можно задавать в предложении разрешений или после имени защищаемого объекта.

  • ON [ OBJECT :: ] [ schema_name ] . object_name
    Указывает объект, для которого отменяется разрешение. Фраза OBJECT необязательна, если указан аргумент schema_name. Если использовано выражение OBJECT, квалификатор области (::) . Если не указан аргумент schema_name, подразумевается схема по умолчанию. Если указан аргумент schema_name, требуется квалификатор области схемы (.) .

  • { FROM | TO } <database_principal>
    Задает участника, для которого отменяется разрешение.

  • GRANT OPTION
    Показывает, что право на предоставление заданного разрешения другим участникам будет отменено. Само разрешение отменено не будет.

    Важное примечаниеВажно!

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

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

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

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

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

  • Database_user
    Указывает пользователя базы данных.

  • Database_role
    Указывает роль базы данных.

  • Application_role
    Указывает роль приложения.

  • Database_user_mapped_to_Windows_User
    Указывает пользователя базы данных, сопоставленного с пользователем Windows.

  • Database_user_mapped_to_Windows_Group
    Указывает пользователя базы данных, сопоставленного с группой Windows.

  • Database_user_mapped_to_certificate
    Указывает пользователя базы данных, сопоставленного с сертификатом.

  • Database_user_mapped_to_asymmetric_key
    Указывает пользователя базы данных, сопоставленного с асимметричным ключом.

  • Database_user_with_no_login
    Указывает пользователя базы данных без соответствующего участника уровня сервера.

Замечания

Сведения об объектах видны в различных представлениях каталога. Дополнительные сведения см. в разделе Представления каталога объектов (Transact-SQL).

Объект — это защищаемый объект уровня схемы, содержащийся в ней, который является родительским элементом в иерархии разрешений. Наиболее специфичные и ограниченные разрешения объекта, которые можно отменить, перечислены в следующей таблице вместе с более общими разрешениями, неявно их содержащими.

Разрешение объекта

Содержится в разрешении объекта

Содержится в разрешении схемы

ALTER

CONTROL

ALTER

CONTROL

CONTROL

CONTROL

DELETE

CONTROL

DELETE

EXECUTE

CONTROL

EXECUTE

INSERT

CONTROL

INSERT

RECEIVE

CONTROL

CONTROL

REFERENCES

CONTROL

REFERENCES

SELECT

RECEIVE

SELECT

TAKE OWNERSHIP

CONTROL

CONTROL

UPDATE

CONTROL

UPDATE

VIEW CHANGE TRACKING.

CONTROL

VIEW CHANGE TRACKING.

VIEW DEFINITION

CONTROL

VIEW DEFINITION

Разрешения

Необходимо разрешение CONTROL для данного объекта.

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

Примеры

A. Отмена разрешения SELECT для таблицы

Следующий пример отменяет разрешение SELECT у пользователя RosaQdM для таблицы Person.Address в базе данных AdventureWorks2008R2.

USE AdventureWorks2008R2;
REVOKE SELECT ON OBJECT::Person.Address FROM RosaQdM;
GO

Б. Отмена разрешения EXECUTE для хранимой процедуры

Следующий пример отменяет разрешение EXECUTE для хранимой процедуры HumanResources.uspUpdateEmployeeHireInfo у роли приложения с именем Recruiting11.

USE AdventureWorks2008R2;
REVOKE EXECUTE ON OBJECT::HumanResources.uspUpdateEmployeeHireInfo
    FROM Recruiting11;
GO 

В. Отмена разрешения REFERENCES для представления с CASCADE

Следующий пример отменяет разрешение REFERENCES для столбца BusinessEntityID в представлении HumanResources.vEmployee у пользователя Wanida с CASCADE.

USE AdventureWorks2008R2;
REVOKE REFERENCES (BusinessEntityID) ON OBJECT::HumanResources.vEmployee 
    FROM Wanida CASCADE;
GO