刪除以前在當(dāng)前數(shù)據(jù)庫(kù)內(nèi)的用戶上授予或拒絕的權(quán)限。
語(yǔ)句權(quán)限:
REVOKE { ALL | statement [ ,...n ] }
FROM security_account [ ,...n ]
對(duì)象權(quán)限:
REVOKE [ GRANT OPTION FOR ]
{ ALL [ PRIVILEGES ] | permission [ ,...n
] }
{
[ ( column [ ,...n ] ) ] ON { table | view }
| ON { table | view } [ ( column [ ,...n ] ) ]
| ON { stored_procedure | extended_procedure
}
| ON {
user_defined_function }
}
{ TO | FROM }
security_account [ ,...n ]
[ CASCADE ]
[ AS { group | role } ]
ALL
指定將刪除所有適用的權(quán)限。對(duì)于語(yǔ)句權(quán)限,只有 sysadmin 固定服務(wù)器角色成員可以使用 ALL。對(duì)于對(duì)象權(quán)限,sysadmin 固定服務(wù)器角色成員、db_owne 固定數(shù)據(jù)庫(kù)角色成員和數(shù)據(jù)庫(kù)對(duì)象所有者都可以使用 ALL。
statement
是要?jiǎng)h除其權(quán)限的授權(quán)語(yǔ)句。語(yǔ)句列表可以包括:
n
是一個(gè)占位符,表示在以逗號(hào)分隔的列表內(nèi)可以重復(fù)的項(xiàng)目。
FROM
指定安全帳戶列表。
security_account
是當(dāng)前數(shù)據(jù)庫(kù)內(nèi)將要被刪除權(quán)限的安全帳戶。安全帳戶可以是:
不能廢除系統(tǒng)角色(如 sysadmin)的權(quán)限。當(dāng)從 SQL Server 或 Windows NT 用戶帳戶中廢除權(quán)限時(shí),指定的 security_account 是唯一受權(quán)限影響的帳戶。如果從 SQL Server 角色或 Windows NT 組廢除權(quán)限,這些權(quán)限將影響當(dāng)前數(shù)據(jù)庫(kù)中作為組或角色成員的用戶,除非用戶已被顯式賦予或拒絕權(quán)限。
REVOKE 可用于兩種特殊的安全帳戶。在 public 角色上廢除的權(quán)限適用于數(shù)據(jù)庫(kù)內(nèi)的所有用戶。在 guest 用戶上廢除的權(quán)限將由數(shù)據(jù)庫(kù)內(nèi)所有沒(méi)有用戶帳戶的用戶使用。
廢除 Windows NT 本地組或全局組的權(quán)限時(shí),指定在該組上定義的域名或計(jì)算機(jī)名,后面跟一個(gè)反斜線然后是組名,如 London\JoeB。但是,若要廢除 Windows NT 內(nèi)置本地組的權(quán)限,請(qǐng)指定 BUILTIN 而不是域名或計(jì)算機(jī)名,如 BUILTIN\Users。
GRANT OPTION FOR
指定要?jiǎng)h除的 WITH GRANT OPTION 權(quán)限。在 REVOKE 中使用 GRANT OPTION FOR 關(guān)鍵字可消除 GRANT 語(yǔ)句中指定的WITH GRANT OPTION 設(shè)置的影響。用戶仍然具有該權(quán)限,但是不能將該權(quán)限授予其他用戶。
如果要廢除的權(quán)限原先不是通過(guò) WITH GRANT OPTION 設(shè)置授予的,則忽略 GRANT OPTION FOR(若指定了此參數(shù))并照例廢除權(quán)限。
如果要廢除的權(quán)限原先是通過(guò) WITH GRANT OPTION 設(shè)置授予的,則指定 CASCADE 和 GRANT OPTION FOR 子句;否則將返回一個(gè)錯(cuò)誤。
PRIVILEGES
是可以包含在符合 SQL-92 標(biāo)準(zhǔn)的語(yǔ)句中的可選關(guān)鍵字。
permission
是要廢除的對(duì)象權(quán)限。當(dāng)廢除表或試圖的權(quán)限時(shí),權(quán)限列表可以包括一個(gè)或多個(gè)這樣的語(yǔ)句:SELECT、INSERT、DELETE 或 UPDATE。
在表上廢除的對(duì)象權(quán)限還可以包括 REFERENCES,在存儲(chǔ)過(guò)程或擴(kuò)展存儲(chǔ)過(guò)程上廢除的對(duì)象權(quán)限可以是 EXECUTE。當(dāng)廢除列上的權(quán)限時(shí),權(quán)限列表可包括 SELECT 或 UPDATE。
column
是當(dāng)前數(shù)據(jù)庫(kù)內(nèi)要被刪除權(quán)限的列名。
table
是當(dāng)前數(shù)據(jù)庫(kù)內(nèi)要被刪除權(quán)限的表名。
view
是當(dāng)前數(shù)據(jù)庫(kù)內(nèi)要被刪除權(quán)限的視圖名稱。
stored_procedure
是當(dāng)前數(shù)據(jù)庫(kù)內(nèi)要被刪除權(quán)限的存儲(chǔ)過(guò)程名稱。
extended_procedure
是要被刪除權(quán)限的擴(kuò)展存儲(chǔ)過(guò)程名稱。
user_defined_function
是要被刪除權(quán)限的用戶定義函數(shù)名。
TO
指定安全帳戶列表。
CASCADE
指定刪除來(lái)自 security_account 的權(quán)限時(shí),也將刪除由 security_account 授權(quán)的任何其它安全帳戶。廢除可授予的權(quán)限時(shí)使用 CASCADE。
如果要廢除的權(quán)限原先是通過(guò) WITH GRANT OPTION 設(shè)置授予 security_account 的,則指定 CASCADE 和 GRANT OPTION FOR 子句;否則將返回一個(gè)錯(cuò)誤。指定 CASCADE 和 GRANT OPTION FOR 子句將只廢除通過(guò) WITH GRANT OPTION 設(shè)置授予 security_account 的權(quán)限以及由 security_account 授權(quán)的其它安全帳戶。
AS {group | role}
指定當(dāng)前數(shù)據(jù)庫(kù)內(nèi)的安全帳戶(在其授權(quán)下執(zhí)行 REVOKE 語(yǔ)句)的可選名稱。如果給要組或角色授予對(duì)象權(quán)限,但需要在其他用戶上廢除該對(duì)象權(quán)限,則可以使用 AS。因?yàn)?REVOKE 語(yǔ)句只能由用戶執(zhí)行而不能由組或角色執(zhí)行,所以組或角色的特定成員在該組或角色的授權(quán)下廢除授予對(duì)象權(quán)限。
REVOKE 只適用于當(dāng)前數(shù)據(jù)庫(kù)內(nèi)的權(quán)限。
廢除的權(quán)限只在被廢除權(quán)限的級(jí)別(用戶、組或角色)上刪除授予或拒絕的權(quán)限。例如,給 Andrew 用戶帳戶顯式授予了查看 authors 表的權(quán)限,該用戶帳戶只是 employees 角色的成員。如果廢除了 employees 角色查看 authors 表的訪問(wèn)權(quán),由于已顯式授予了 Andrew 查看表的權(quán)限,因此該帳戶仍能查看該表。只有當(dāng)也廢除了授予 Andrew 的權(quán)限時(shí),Andrew 才不能查看 authors 表。如果從未顯式授予 Andrew 查看 authors 的權(quán)限,那么廢除 employees 角色的權(quán)限也將禁止 Andrew 查看該表。
說(shuō)明 REVOKE 刪除以前授予或拒絕了的權(quán)限。可能需要對(duì)使用 REVOKE 的 Microsoft® SQL Server™ 6.5 或更早版本中的腳本進(jìn)行更改,以使用 DENY 維護(hù)行為。
如果用戶激活一個(gè)應(yīng)用程序角色,REVOKE 將不影響用戶使用該應(yīng)用程序角色訪問(wèn)對(duì)象。雖然可以廢除用戶訪問(wèn)當(dāng)前數(shù)據(jù)庫(kù)內(nèi)特定對(duì)象的權(quán)限,但是如果應(yīng)用程序有權(quán)訪問(wèn)該對(duì)象,則在激活該應(yīng)用程序的期間該用戶也有訪問(wèn)權(quán)。
使用 sp_helprotect 報(bào)告數(shù)據(jù)庫(kù)對(duì)象或用戶的權(quán)限。
REVOKE 權(quán)限默認(rèn)授予 sysadmin 固定服務(wù)器角色成員、db_owner 和 db_securityadmin 固定數(shù)據(jù)庫(kù)角色成員以及數(shù)據(jù)庫(kù)對(duì)象所有者。
下例廢除已授予用戶 Joe 和 Corporate\BobJ 的 CREATE TABLE 權(quán)限。它刪除了允許 Joe 與 Corporate\BobJ 創(chuàng)建表的權(quán)限。不過(guò),如果已將 CREATE TABLE 權(quán)限授予給了包含 Joe 和 Corporate\BobJ 成員的任何角色,那么 Joe 和 Corporate\BobJ 仍可創(chuàng)建表。
REVOKE CREATE TABLE FROM Joe, [Corporate\BobJ]
下例廢除授予多個(gè)用戶的多個(gè)語(yǔ)句權(quán)限。
REVOKE CREATE TABLE, CREATE DEFAULT
FROM Mary, John
用戶 Mary 是 Budget 角色的成員,已給該角色授予了對(duì) Budget_Data 表的 SELECT 權(quán)限。已對(duì) Mary 使用 DENY 語(yǔ)句以防止 Mary 通過(guò)授予 Budget 角色的權(quán)限訪問(wèn) Budget_Data 表。
下例刪除對(duì) Mary 拒絕的權(quán)限,并通過(guò)適用于 Budget 角色的 SELECT 權(quán)限,允許 Mary 對(duì)該表使用 SELECT 語(yǔ)句。
REVOKE SELECT ON Budget_Data TO Mary
相關(guān)文章