适用于:SQL Server
Azure SQL 数据库
Azure SQL 托管实例
Azure Synapse Analytics
分析平台系统(PDW)
Microsoft Fabric 中的 SQL 分析终结点
Microsoft Fabric 中的仓库
Microsoft Fabric 预览版中的 SQL 数据库
撤消对数据库授予和拒绝的权限。
Syntax
REVOKE [ GRANT OPTION FOR ] <permission> [ ,...n ]
{ TO | FROM } <database_principal> [ ,...n ]
[ CASCADE ]
[ AS <database_principal> ]
<permission> ::=
permission | ALL [ PRIVILEGES ]
<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
Arguments
permission
指定可对数据库拒绝的权限。 有关权限的列表,请参阅本主题后面的“备注”部分。
ALL
该选项不会撤消所有可能的权限。 撤消 ALL 等同于撤消下列权限:BACKUP DATABASE、BACKUP LOG、CREATE DATABASE、CREATE DEFAULT、CREATE FUNCTION、CREATE PROCEDURE、CREATE RULE、CREATE TABLE 和 CREATE VIEW。
PRIVILEGES
包含此参数是为了符合 ISO 标准。 请不要更改 ALL 的行为。
GRANT OPTION
指示要撤消向其他主体授予指定权限的权限。 不会撤消该权限本身。
Important
如果主体具有不带 GRANT 选项的指定权限,则将撤消该权限本身。
CASCADE
指示要撤消的权限也会从此主体授予或拒绝该权限的其他主体中撤消。
Caution
如果对授予了 WITH GRANT OPTION 权限的权限执行级联撤消,将同时撤消该权限的 GRANT 和 DENY 权限。
AS <database_principal> 指定一个主体,执行此查询的主体从该主体获得撤销该权限的权利。
Database_user
指定数据库用户。
Database_role
指定数据库角色。
Application_role
适用于:SQL Server 2008 (10.0.x) 及更高版本、SQL 数据库
指定应用程序角色。
Database_user_mapped_to_Windows_User
适用于:SQL Server 2008 (10.0.x) 及更高版本
指定映射到 Windows 用户的数据库用户。
Database_user_mapped_to_Windows_Group
适用于:SQL Server 2008 (10.0.x) 及更高版本
指定映射到 Windows 组的数据库用户。
Database_user_mapped_to_certificate
适用于:SQL Server 2008 (10.0.x) 及更高版本
指定映射到证书的数据库用户。
Database_user_mapped_to_asymmetric_key
适用于:SQL Server 2008 (10.0.x) 及更高版本
指定映射到非对称密钥的数据库用户。
Database_user_with_no_login
指定无相应服务器级主体的数据库用户。
Remarks
如果您撤消对通过 GRANT OPTION 被授予权限的主体的权限,但是未指定 CASCADE,则语句将失败。
数据库是安全对象,包含于权限层次结构中作为其父级的服务器中。 下表列出了可撤消的对数据库最为具体的限定权限,以及隐含这些权限的更为通用的权限。
| Database permission | 数据库权限隐含的权限 | 服务器权限隐含的权限 |
|---|---|---|
| 管理数据库批量操作 适用对象:SQL 数据库。 |
CONTROL | CONTROL SERVER |
| ALTER | CONTROL | 更改任何数据库 |
| 修改任意应用角色 | ALTER | CONTROL SERVER |
| 更改任何程序集 | ALTER | CONTROL SERVER |
| 更改任何非对称密钥 | ALTER | CONTROL SERVER |
| 修改任何证书 | ALTER | CONTROL SERVER |
| 更改任何列加密密钥 | ALTER | CONTROL SERVER |
| ALTER ANY COLUMN MASTER KEY DEFINITION | ALTER | CONTROL SERVER |
| 更改任何合同 | ALTER | CONTROL SERVER |
| 修改任何数据库审核 | ALTER | ALTER ANY SERVER AUDIT |
| ALTER ANY DATABASE DDL TRIGGER | ALTER | CONTROL SERVER |
| 更改任何数据库事件通知 | ALTER | 修改任何事件通知 |
| 更改任意数据库事件会话 适用于: Azure SQL 数据库。 |
ALTER | ALTER ANY EVENT SESSION |
| 更改任何数据库作用域配置 适用于:SQL Server 2016 (13.x) 及更高版本、SQL 数据库。 |
CONTROL | CONTROL SERVER |
| 更改任何数据空间 | ALTER | CONTROL SERVER |
| 修改任何外部数据源 | ALTER | CONTROL SERVER |
| 更改任何外部文件格式 | ALTER | CONTROL SERVER |
| ALTER ANY EXTERNAL LIBRARY 适用于: SQL Server 2017 (14.x)。 |
CONTROL | CONTROL SERVER |
| 更改任何全文目录 | ALTER | CONTROL SERVER |
| 更改任意掩码 | CONTROL | CONTROL SERVER |
| 更改任何消息类型 | ALTER | CONTROL SERVER |
| 更改任意远程服务绑定 | ALTER | CONTROL SERVER |
| 修改任意角色 | ALTER | CONTROL SERVER |
| 修改任何路由 | ALTER | CONTROL SERVER |
| 更改任何架构 | ALTER | CONTROL SERVER |
| 更改任何安全策略 适用于: Azure SQL 数据库。 |
CONTROL | CONTROL SERVER |
| 更改任何服务 | ALTER | CONTROL SERVER |
| 更改任意对称密钥 | ALTER | CONTROL SERVER |
| 更改任何用户 | ALTER | CONTROL SERVER |
| AUTHENTICATE | CONTROL | AUTHENTICATE SERVER |
| BACKUP DATABASE | CONTROL | CONTROL SERVER |
| BACKUP LOG | CONTROL | CONTROL SERVER |
| CHECKPOINT | CONTROL | CONTROL SERVER |
| CONNECT | CONNECT REPLICATION | CONTROL SERVER |
| CONNECT REPLICATION | CONTROL | CONTROL SERVER |
| CONTROL | CONTROL | CONTROL SERVER |
| CREATE AGGREGATE | ALTER | CONTROL SERVER |
| CREATE ASSEMBLY | 更改任何程序集 | CONTROL SERVER |
| 创建非对称密钥 | 更改任何非对称密钥 | CONTROL SERVER |
| CREATE CERTIFICATE | 修改任何证书 | CONTROL SERVER |
| CREATE CONTRACT | 更改任何合同 | CONTROL SERVER |
| CREATE DATABASE | CONTROL | 创建任意数据库 |
| 创建数据库 DDL 事件通知 | 更改任何数据库事件通知 | 创建 DDL 事件通知 |
| CREATE DEFAULT | ALTER | CONTROL SERVER |
| 创建全文目录 | 更改任何全文目录 | CONTROL SERVER |
| CREATE FUNCTION | ALTER | CONTROL SERVER |
| 创建消息类型 | 更改任何消息类型 | CONTROL SERVER |
| CREATE PROCEDURE | ALTER | CONTROL SERVER |
| CREATE QUEUE | ALTER | CONTROL SERVER |
| 创建远程服务绑定 | 更改任意远程服务绑定 | CONTROL SERVER |
| CREATE ROLE | 修改任意角色 | CONTROL SERVER |
| CREATE ROUTE | 修改任何路由 | CONTROL SERVER |
| CREATE RULE | ALTER | CONTROL SERVER |
| CREATE SCHEMA | 更改任何架构 | CONTROL SERVER |
| CREATE SERVICE | 更改任何服务 | CONTROL SERVER |
| 创建对称密钥 | 更改任意对称密钥 | CONTROL SERVER |
| CREATE SYNONYM | ALTER | CONTROL SERVER |
| CREATE TABLE | ALTER | CONTROL SERVER |
| CREATE TYPE | ALTER | CONTROL SERVER |
| CREATE VIEW | ALTER | CONTROL SERVER |
| 创建 XML 架构集合 | ALTER | CONTROL SERVER |
| DELETE | CONTROL | CONTROL SERVER |
| EXECUTE | CONTROL | CONTROL SERVER |
| 执行任何外部脚本 适用于: SQL Server 2016 (13.x)。 |
CONTROL | CONTROL SERVER |
| INSERT | CONTROL | CONTROL SERVER |
| 终止数据库连接 适用于: Azure SQL 数据库。 |
CONTROL | 更改任何连接 |
| REFERENCES | CONTROL | CONTROL SERVER |
| SELECT | CONTROL | CONTROL SERVER |
| SHOWPLAN | CONTROL | ALTER TRACE |
| 订阅查询通知 | CONTROL | CONTROL SERVER |
| TAKE OWNERSHIP | CONTROL | CONTROL SERVER |
| UNMASK | CONTROL | CONTROL SERVER |
| UPDATE | CONTROL | CONTROL SERVER |
| 查看任何列加密密钥定义 | CONTROL | 查看任何定义 |
| 查看任何列主密钥定义 | CONTROL | 查看任何定义 |
| 查看数据库状态 | CONTROL | 查看服务器状态 |
| VIEW DEFINITION | CONTROL | 查看任何定义 |
Permissions
执行此语句的主体(或用 AS 选项指定的主体)必须具有对数据库的 CONTROL 权限,或具有隐含对数据库的 CONTROL 权限的更高权限。
若要使用 AS 选项,则指定的主体必须拥有数据库。
Examples
A. 撤消创建证书的权限
以下示例从用户 CREATE CERTIFICATE 中撤消对 AdventureWorks2022 数据库的 MelanieK 权限。
适用于:SQL Server 2008 (10.0.x) 及更高版本
USE AdventureWorks2022;
REVOKE CREATE CERTIFICATE FROM MelanieK;
GO
B. 从应用程序角色中撤消 REFERENCES 权限
以下示例从应用程序角色 REFERENCES 中撤消对 AdventureWorks2022 数据库的 AuditMonitor 权限。
适用于:SQL Server 2008 (10.0.x) 及更高版本、SQL 数据库
USE AdventureWorks2022;
REVOKE REFERENCES FROM AuditMonitor;
GO
C. 使用 CASCADE 撤消 VIEW DEFINITION
以下示例从用户 VIEW DEFINITION 以及 AdventureWorks2022 已授予 CarmineEs 权限的所有主体中撤消对 CarmineEs 数据库的 VIEW DEFINITION 权限。
USE AdventureWorks2022;
REVOKE VIEW DEFINITION FROM CarmineEs CASCADE;
GO
See Also
sys.database_permissions (Transact-SQL)
sys.database_principals (Transact-SQL)
GRANT 数据库权限 (Transact-SQL)
DENY 数据库权限 (Transact-SQL)
权限(数据库引擎)
主体(数据库引擎)