适用于:SQL Server
Azure SQL 数据库
Azure SQL 托管实例
Azure Synapse Analytics
Microsoft Fabric中的SQL分析端点
Microsoft Fabric中的仓库
Microsoft Fabric中的SQL数据库
撤消以前授予或拒绝的权限。
Syntax
SQL Server、Azure SQL 数据库 和 Fabric SQL 数据库的语法
-- Simplified syntax for REVOKE
REVOKE [ GRANT OPTION FOR ]
{
[ ALL [ PRIVILEGES ] ]
|
permission [ ( column [ ,...n ] ) ] [ ,...n ]
}
[ ON [ class :: ] securable ]
{ TO | FROM } principal [ ,...n ]
[ CASCADE] [ AS principal ]
Azure Synapse Analytics and Microsoft Fabric warehouse 的 Syntax
REVOKE
<permission> [ ,...n ]
[ ON [ <class_type> :: ] securable ]
[ FROM | TO ] principal [ ,...n ]
[ CASCADE ]
[;]
<permission> ::=
{ see the tables below }
<class_type> ::=
{
LOGIN
| DATABASE
| OBJECT
| ROLE
| SCHEMA
| USER
}
Arguments
GRANT 选项
指示将撤消授予指定权限的能力。 在使用 CASCADE 参数时,需要具备该功能。
Important
如果负责人获得了指定的许可但没有选项 GRANT ,该许可本身将被撤销。
ALL
适用于:SQL Server 2008 (10.0.x) 及更高版本
该选项不会撤消所有可能的权限。 撤消 ALL 相当于撤消以下权限。
如果可担保资产是数据库,ALL意味着 BACKUP, LOG, DATABASE, BACKUP, CREATE DATABASE, CREATE DEFAULTCREATE FUNCTIONCREATE PROCEDURECREATE RULE。 CREATE TABLECREATE VIEW
如果安全对象是标量函数,则 ALL 对应 EXECUTE 和 REFERENCES。
如果可保障函数是表值函数,ALL 表示 DELETE、 INSERT、 REFERENCES、SELECT 和 UPDATE。
如果安全对象是存储过程,则 ALL 表示 EXECUTE。
如果可保障变量是一个表,ALL 表示 DELETE、 INSERT、 REFERENCES、SELECT 和 UPDATE。
如果可保障对象是一个视图,ALL 表示 DELETE、 INSERT、 REFERENCES、SELECT 和 UPDATE。
Note
REVOKE ALL语法已被弃用。 在 SQL Server的未来版本中将删除此功能。 请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。 应改为撤销特定权限。
PRIVILEGES
包含此参数是为了符合 ISO 标准。 请不要更改 ALL 的行为。
permission
权限的名称。 本主题后面的特定于安全对象的语法部分所列出的主题介绍了权限和安全对象之间的有效映射。
column
指定表中将撤消其权限的列的名称。 需要使用括号。
class
指定将撤消其权限的安全对象的类。 需要使用作用域限定符 ::。
securable
指定将撤消其权限的安全对象。
TO | FROM principal
主体的名称。 可撤消其对安全对象的权限的主体随安全对象而异。 有关有效组合的详细信息,请参阅本主题后面的特定于安全对象的语法部分所列出的主题。
CASCADE
指示当前正在撤消的权限也将从其他被该主体授权的主体中撤消。 使用CASCADE参数时,还必须包含 GRANT OPTION FOR参数。
Caution
对授予WITH GRANT OPTION许可的连锁撤销将会撤销该许可的两者GRANTDENY。
副 校长
使用 AS principal 子句指示将撤销由你以外的主体所授予的权限。 例如,假设用户 Mary 是 principal_id 12,用户 Raul 是 principal_id 15。 Mary 和 Raul 为用户 Steven 授予相同权限。 Sys.database_permissions 表两次指示该权限,但分别具有不同的 grantor_prinicpal_id 值。 Mary 可以使用 AS RAUL 子句撤销权限以移除 Raul 授予的权限。
在此语句中使用 AS 并不意味着能够模拟其他用户。
Remarks
语句的完整 REVOKE 语法很复杂。 上面的语法关系图进行了简化以突出其结构。 本主题后面的特定于安全对象的语法部分中列出的主题介绍了用于撤销特定安全对象的权限的完整语句。
该 REVOKE 语句可用于删除已授予的权限,该 DENY 语句可用于防止主体通过 a 获取 GRANT特定权限。
授予对指定安全对象的权限将删除 DENY 或 REVOKE 授予该权限。 如果在包含安全对象的较高范围内拒绝相同的权限,则 DENY 优先。 但是,在更高级别撤销已授予权限的操作并不优先。
Caution
表级 DENY 不优先于列级 GRANT。 保留了权限层次结构中的这种不一致性以保持向后兼容。 未来的版本会将其删除。
sp_helprotect 系统存储过程报告在数据库级安全对象上的权限。
如果你在撤销已REVOKE指定OPTION授权的主体授权时,未指定CASCADE,则GRANT该语句将失败。
Permissions
对安全对象具有 CONTROL 权限的主体可以撤消该安全对象的权限。 对象所有者可以撤消他们所拥有的对象的权限。
具备 CONTROL SERVER 权限的被权限者(例如 sysadmin 固定服务器角色的成员)可以撤消对该服务器的任何安全对象所拥有的任何权限。 对数据库具有 CONTROL 权限的被授权者(例如 db_owner 固定数据库角色的成员)可以撤消对该数据库的任何安全对象所拥有的任何权限。 被授予架构的 CONTROL 权限的用户可以撤消针对该架构的任何对象的任何权限。
可安全专用语法
下表列出了安全对象以及描述特定于安全对象的语法的主题。
Examples
A. 授权和撤销
适用于: SQL Server, SQL 数据库
下面的示例在用户数据库上创建一个架构、一个包含的数据库用户和一个新的角色。 它会将用户添加到该角色,向角色授予对架构的 SELECT 权限,然后删除 (REVOKE) 角色的该权限。
CREATE SCHEMA Sales;
GO
CREATE USER Joe without login;
GO
CREATE ROLE Vendors;
GO
ALTER ROLE Vendors ADD MEMBER Joe;
GO
GRANT SELECT ON SCHEMA :: Sales TO Vendors;
GO
REVOKE SELECT ON SCHEMA :: Sales TO Vendors;
GO