適用於:SQL Server
Azure SQL 資料庫
Azure SQL 受控執行個體
Azure Synapse Analytics
分析平台系統(PDW)
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、平行處理數據倉儲和Microsoft網狀架構倉儲的語法
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
補助選項
表示將撤銷授與指定權限的能力。 這在您使用 CASCADE 引數時是必須的。
Important
如果主體有不含 GRANT 選項的指定權限,則會撤銷權限本身。
ALL
適用於:SQL Server 2008 (10.0.x) 和更新版本
這個選項不會撤銷所有可能的權限。 撤銷 ALL 等同於撤銷下列權限。
如果安全性實體是資料庫,ALL 表示 BACKUP DATABASE、BACKUP LOG、CREATE DATABASE、CREATE DEFAULT、CREATE FUNCTION、CREATE PROCEDURE、CREATE RULE、CREATE TABLE 和 CREATE 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 主體
這是主體的名稱。 可以撤銷安全性實體權限的主體,隨著安全性實體而不同。 如需有效組合的詳細資訊,請參閱本主題稍後安全性實體特定語法中所列的主題。
CASCADE
指出目前正在撤銷的權限,也會從它被這個主體所授與的其他主體一起撤銷。 當您使用 CASCADE 引數時,必須也包括 GRANT OPTION FOR 引數。
Caution
獲得授與 WITH GRANT OPTION 之權限的串聯撤銷,會同時撤銷該權限的 GRANT 和 DENY。
副 校長
您可使用 AS principal 子句,來表示要撤銷由您以外的主體所授與的權限。 例如,假設使用者 Mary 是 principal_id 12;使用者 Raul 是 principal_id 15。 Mary 和 Raul 都授與 Steven 這個使用者相同的權限。 sys.database_permissions 資料表會指出權限兩次,但每個權限都各有不同的 grantor_principal_id 值。 Mary 可以使用 AS RAUL 子句撤銷權限,以移除 Raul 的授權。
在此陳述式中使用 AS 不代表能模擬其他使用者。
Remarks
REVOKE 陳述式的完整語法相當複雜。 上方的語法圖已簡化,以強調其結構。 本主題稍後安全性實體特定語法所列的幾個主題,會描述撤銷特定安全性實體權限的完整語法。
REVOKE 陳述式可用來移除授與的權限,而 DENY 陳述式可用來避免主體透過 GRANT 取得特定權限。
授與權限會移除指定安全性實體權限的 DENY 或 REVOKE。 如果相同權限在包含安全性實體的更高範圍被拒絕,則 DENY 的優先順序較高。 然而,在更高範圍撤銷授與權限的優先順序並不會比較高。
Caution
資料表層級的 DENY 不會優先於資料行層級的 GRANT。 保留權限階層中這項不一致的目的,是為了與舊版相容。 未來的版本將予以移除。
sp_helprotect 系統預存程序會報告資料庫層級安全性實體的權限。
從被授與指定了 GRANT OPTION 之權限的主體撤銷權限時,如果未指定 CASCADE,REVOKE 陳述式便會失敗。
Permissions
具有安全性實體之 CONTROL 權限的主體可以撤銷安全性實體的權限。 物件擁有者可以撤銷他們所擁有之物件的權限。
CONTROL SERVER 權限的被授與者 (例如系統管理員 (sysadmin) 固定伺服器角色的成員),可以撤銷伺服器中任何安全性實體的任何權限。 資料庫之 CONTROL 權限的被授與者 (例如 db_owner 固定資料庫角色的成員),可以撤銷資料庫中任何安全性實體的任何權限。 結構描述之 CONTROL 權限的被授與者,可以撤銷結構描述中任何物件的任何權限。
可安全專用語法
下表列出安全性實體和描述安全性實體特定語法的主題。
Examples
A. 授與及撤銷
適用範圍: SQL Server、SQL Database
下列範例會建立結構描述、自主資料庫使用者,以及使用者資料庫的新角色。 它會將使用者新增至角色、將結構描述的 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
另請參閱
權限階層 (Database Engine)
DENY (Transact-SQL)
格蘭特 (Transact-SQL)
sp_addlogin (Transact-SQL)
sp_adduser(Transact-SQL)
sp_changedbowner(Transact-SQL)
sp_dropuser(Transact-SQL)
sp_helprotect (Transact-SQL)
sp_helpuser(Transact-SQL)