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


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

Область применения: SQL Server Управляемый экземпляр SQL Azure

Отменяет разрешения GRANT и DENY на уровне сервера.

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

Синтаксис

REVOKE [ GRANT OPTION FOR ] permission  [ ,...n ]   
    { TO | FROM } <grantee_principal> [ ,...n ]  
        [ CASCADE ]  
    [ AS <grantor_principal> ]   
  
<grantee_principal> ::= SQL_Server_login   
        | SQL_Server_login_mapped_to_Windows_login  
    | SQL_Server_login_mapped_to_Windows_group  
    | SQL_Server_login_mapped_to_certificate  
    | SQL_Server_login_mapped_to_asymmetric_key  
    | server_role  
  
<grantor_principal> ::= SQL_Server_login   
    | SQL_Server_login_mapped_to_Windows_login  
    | SQL_Server_login_mapped_to_Windows_group  
    | SQL_Server_login_mapped_to_certificate  
    | SQL_Server_login_mapped_to_asymmetric_key  
    | server_role  

Аргументы

permission
Определяет разрешение, которое может быть предоставлено на сервер. Список разрешений см. в подразделе "Примечания" далее в этом разделе.

{ TO | FROM } <grantee_principal> Задает субъекта, у которого отменяется разрешение.

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

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

Внимание

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

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

Внимание

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

SQL_Server_login
Указывает имя входа SQL Server.

SQL_Server_login_mapped_to_Windows_login
Указывает имя входа SQL Server, сопоставленное с именем входа Windows.

SQL_Server_login_mapped_to_Windows_group
Указывает имя входа SQL Server, сопоставленное с группой Windows.

SQL_Server_login_mapped_to_certificate
Указывает имя входа SQL Server, сопоставленное с сертификатом.

SQL_Server_login_mapped_to_asymmetric_key
Указывает имя входа SQL Server, сопоставленное с асимметричным ключом.

server_role
Указывает определяемую пользователем роль сервера.

Замечания

Разрешения в области сервера могут быть отменены только в том случае, если текущей базой данных является master.

REVOKE удаляет как разрешение GRANT, так и разрешение DENY.

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

Сведения о разрешениях для сервера можно просмотреть в представлении каталога sys.server_permissions, а сведения о субъектах на уровне сервера — в представлении каталога sys.server_principals. Сведения о членстве ролей сервера можно просмотреть в представлении каталога sys.server_role_members.

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

Разрешение сервера Подразумевается в разрешении сервера
ADMINISTER BULK OPERATIONS CONTROL SERVER
ALTER ANY AVAILABILITY GROUP

Применимо к: SQL Server (SQL Server 2012 (11.x) до текущей версии.
CONTROL SERVER
ALTER ANY CONNECTION CONTROL SERVER
ALTER ANY CREDENTIAL CONTROL SERVER
ALTER ANY DATABASE CONTROL SERVER
ALTER ANY ENDPOINT CONTROL SERVER
ALTER ANY EVENT NOTIFICATION CONTROL SERVER
ALTER ANY EVENT SESSION CONTROL SERVER
ALTER ANY LINKED SERVER CONTROL SERVER
ALTER ANY LOGIN CONTROL SERVER
ALTER ANY SERVER AUDIT CONTROL SERVER
ALTER ANY SERVER ROLE

Применимо к: SQL Server (SQL Server 2012 (11.x) до текущей версии.
CONTROL SERVER
ALTER RESOURCES CONTROL SERVER
ALTER SERVER STATE CONTROL SERVER
ALTER SETTINGS CONTROL SERVER
ALTER TRACE CONTROL SERVER
AUTHENTICATE SERVER CONTROL SERVER
CONNECT ANY DATABASE

Область применения: SQL Server (SQL Server 2014 (12.x) до текущей версии.
CONTROL SERVER
CONNECT SQL CONTROL SERVER
CONTROL SERVER CONTROL SERVER
CREATE ANY DATABASE ALTER ANY DATABASE
CREATE AVAILABILITY GROUP

Применимо к: SQL Server (SQL Server 2012 (11.x) до текущей версии.
ALTER ANY AVAILABILITY GROUP
CREATE DDL EVENT NOTIFICATION ALTER ANY EVENT NOTIFICATION
CREATE ENDPOINT … ALTER ANY ENDPOINT
CREATE SERVER ROLE

Применимо к: SQL Server (SQL Server 2012 (11.x) до текущей версии.
ALTER ANY SERVER ROLE
CREATE TRACE EVENT NOTIFICATION ALTER ANY EVENT NOTIFICATION
EXTERNAL ACCESS ASSEMBLY CONTROL SERVER
IMPERSONATE ANY LOGIN

Область применения: SQL Server (SQL Server 2014 (12.x) до текущей версии.
CONTROL SERVER
SELECT ALL USER SECURABLES

Область применения: SQL Server (SQL Server 2014 (12.x) до текущей версии.
CONTROL SERVER
SHUTDOWN CONTROL SERVER
UNSAFE ASSEMBLY CONTROL SERVER
VIEW ANY DATABASE VIEW ANY DEFINITION
VIEW ANY DEFINITION CONTROL SERVER
VIEW SERVER STATE ALTER SERVER STATE

Разрешения

Требует разрешения CONTROL SERVER или членства в предопределенной роли сервера sysadmin.

Примеры

А. Отмена разрешения у имени входа

В следующем примере разрешение VIEW SERVER STATE отменяется у учетных данных SQL Server WanidaBenshoof.

USE master;  
REVOKE VIEW SERVER STATE FROM WanidaBenshoof;  
GO  

B. Отмена параметра WITH GRANT

В следующем примере право предоставления CONNECT SQL отменяется у учетных данных SQL Server JanethEsteves.

USE master;  
REVOKE GRANT OPTION FOR CONNECT SQL FROM JanethEsteves;  
GO  

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

См. также

GRANT (Transact-SQL)
DENY (Transact-SQL)
DENY, запрет разрешений на сервере (Transact-SQL)
REVOKE, отмена разрешений сервера (Transact-SQL)
Иерархия разрешений (ядро СУБД)
sys.fn_builtin_permissions (Transact-SQL)
sys.fn_my_permissions (Transact-SQL)
HAS_PERMS_BY_NAME (Transact-SQL)