REVOKE 服务器权限(Transact-SQL)

适用于:SQL ServerAzure 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 选项
指示要撤消向其他主体授予指定权限的权限。 不会撤消该权限本身。

重要

如果负责人获得了指定的许可但没有选项 GRANT ,该许可本身将被撤销。

CASCADE
指示要撤消的权限也会从此主体授予或拒绝该权限的其他主体中撤消。

注意

对授予WITH GRANT OPTION许可的连锁撤销将会撤销该许可的两者GRANTDENY。

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移除了两个GRANTDENY和权限。

使用 REVOKEGRANT 选项 FOR 来撤销重新授予指定权限的权利。 如果主体所具有的权限还带有授予该权限的权限,则将撤消授予该权限的权限,而不会撤消权限本身。 但如果委托人拥有指定的许可但没有选项 GRANT ,许可本身将被撤销。

可以在 sys.server_permissions 目录视图中查看有关服务器权限的信息;在 sys.server_principals 目录视图中查看有关服务器主体的信息。 以及在 sys.server_role_members 目录视图中查看有关服务器角色成员身份的信息。

服务器是权限层次结构的最高级别。 下表列出了可撤消的对服务器最为具体的限定权限。

服务器权限 服务器权限隐含的权限
管理批量操作 控制服务器
更改任意 AVAILABILITY GROUP

适用范围: SQL Server (SQL Server 2012 (11.x) 到 当前版本)。
控制服务器
更改任何连接 控制服务器
更改任意 CREDENTIAL 控制服务器
更改任意 DATABASE 控制服务器
更改任意 ENDPOINT 控制服务器
更改任意 EVENT NOTIFICATION 控制服务器
更改任意 EVENT SESSION 控制服务器
更改任何链接服务器 控制服务器
更改任意 LOGIN 控制服务器
更改任意 SERVER AUDIT 控制服务器
更改任意 SERVER ROLE

适用范围: SQL Server (SQL Server 2012 (11.x) 到 当前版本)。
控制服务器
更改资源 控制服务器
更改服务器状态 控制服务器
修改设置 控制服务器
ALTER 追踪 控制服务器
身份验证服务器 控制服务器
连接 ANY DATABASE

适用范围: SQL Server (SQL Server 2014 (12.x) 到 当前版本)。
控制服务器
连接 SQL 控制服务器
控制服务器 控制服务器
创造任何一个 DATABASE 更改任意 DATABASE
CREATE AVAILABILITY GROUP

适用范围: SQL Server (SQL Server 2012 (11.x) 到 当前版本)。
更改任意 AVAILABILITY GROUP
创建DDL EVENT NOTIFICATION 更改任意 EVENT NOTIFICATION
CREATE ENDPOINT 更改任意 ENDPOINT
CREATE SERVER ROLE

适用范围: SQL Server (SQL Server 2012 (11.x) 到 当前版本)。
更改任意 SERVER ROLE
创建追踪 EVENT NOTIFICATION 更改任意 EVENT NOTIFICATION
外部访问 ASSEMBLY 控制服务器
模拟 ANY LOGIN

适用范围: SQL Server (SQL Server 2014 (12.x) 到 当前版本)。
控制服务器
选择所有 USER 安全对象

适用范围: SQL Server (SQL Server 2014 (12.x) 到 当前版本)。
控制服务器
SHUTDOWN 控制服务器
安全 ASSEMBLY 控制服务器
VIEW 任何 DATABASE VIEW 任何定义
VIEW 任何定义 控制服务器
VIEW 服务器状态 更改服务器状态

权限

要求具有 CONTROL SERVER 权限,或者具有 sysadmin 固定服务器角色的成员身份。

示例

A. 从登录名中撤消权限

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

USE master;  
REVOKE VIEW SERVER STATE FROM WanidaBenshoof;  
GO  

B. 撤销WITH GRANT 选项

以下示例从 SQL Server 登录名 CONNECT SQL 中撤消授予 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)