Sql-Server
sys.database_permissions 可以包含 REVOKE 嗎?
sys.database_permissions的 Microsoft 文件提到有效值為
state
“D”、“R”、“G”、“W”。對應的值為state_desc
“DENY”、“REVOKE”、“GRANT”、“GRANT_WITH_GRANT_OPTIONS”。“R”/“REVOKE”的值讓我很驚訝。“REVOKE”不只是消除先前授予或拒絕權限的語法的一部分嗎?
值或“R”/“REVOKE”是否可能出現在此系統視圖中?如果有,會在什麼情況下出現?
我知道,如果您撤銷了拒絕權限,則拒絕權限就會消失;如果您撤銷已授予的權限,則已授予的權限將被刪除。在什麼情況下 SQL Server 會註冊 REVOKE’ing
sys.database_permissions
而不是簡單地刪除現有的 GRANT/REVOKE/GRANT_WITH_GRANT_OPTIONS 行?
REVOKE
不只是刪除訪問權限,而是撤消由 aGRANT
或DENY
. 換句話說,如果對安全主體(例如User、Login等)的對象顯式拒絕權限,則可以通過REVOKE
在其上使用來刪除顯式拒絕的權限。經過一些研究,根據Mark Chesney的Stack Overflow 回答,看起來“R”作為視圖中
state
列的潛在值的案例sys.database_permissions
是針對與父表或視圖的權限相矛盾的列級權限:對於可以具有列權限的對象(例如表或視圖),DENY 或 GRANT 對象權限的存在需要 REVOKE 才能保留列權限。