REVOKE 服务器权限 (Transact-SQL)

适用于: SQL Server Azure SQL 托管实例

删除服务器级 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
指定映射到 Windows 登录名的 SQL Server 登录名。

SQL_Server_login_mapped_to_Windows_group
指定映射到 Windows 组的 SQL Server 登录名。

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 固定服务器角色的成员身份。

示例

A. 从登录名中撤消权限

以下示例从 SQL Server 登录名 WanidaBenshoof 中撤消 VIEW SERVER STATE 权限。

USE master;  
REVOKE VIEW SERVER STATE FROM WanidaBenshoof;  
GO  

B. 撤消 WITH GRANT 选项

以下示例从 SQL Server 登录名 JanethEsteves 中撤消授予 CONNECT SQL 的权限。

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)