REVOKE 服务器权限 (Transact-SQL)
适用于: SQL Server Azure SQL 托管实例
删除服务器级 GRANT 和 DENY 权限。
语法
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)