MSDN documentation for sys.database_permissions
表示狀態列可以是'G','D','R'或'W'。 'R'值有'REVOKE'的描述,這使得它聽起來像一排,這個值將對應於撤銷的許可。但是,從the docs for REVOKE
可以看出,撤銷權限完全可以將其刪除,所以我期望從sys.database_permissions
中刪除該行。當我測試授權然後撤銷權限時發生了這種情況;在GRANT
之後,在該視圖中顯示該權限,並在REVOKE
後消失。sys.database_permissions何時包含state ='R'的行?
我的問題:在什麼情況下這個視圖會包含狀態設置爲'R'的行?我這樣問,因爲我不確定在代碼中檢查此視圖時是否需要處理'R'行。
我能想到的情況可能發生,但一些潛在的情景還沒有發現任何確認:
- 如果授予一些毯子許可,然後撤銷一個更精細的權限「R」行可能會出現這是由一攬子許可所暗示的(細粒度許可將顯示爲'R')。到目前爲止,我還沒有找到任何這樣的權限。
- 當SQL處理
REVOKE
命令並且整行消失時,'R'行可能會非常短暫地顯示。我沒有觀察到這一點,但大概只有一小段時間纔會出現。
「[是 - 我相信它會發生無線列級權限的矛盾表或視圖燙髮(HTTP:/ /twitter.com/#!/jackrichins/status/154813692918235136)「 – 2012-01-05 06:42:52
非常感謝@RemusRusanu - 看起來正確。你想發佈這個作爲答案,還是我? – Charlie 2012-01-08 16:03:44