MSDN 文档sys.database_permissions
说状态列可以是“G”、“D”、“R”或“W” 。“R”值具有“REVOKE”的描述,这听起来像是具有该值的行将对应于撤销的权限。但是,据我所知,REVOKE
从sys.database_permissions
. 这就是当我测试授予然后撤销权限时发生的情况;在GRANT
权限出现在该视图中之后,在REVOKE
它消失之后。
我的问题:在什么情况下这个视图会包含状态设置为“R”的行?我问这个是因为我不确定在代码中检查这个视图时是否需要处理“R”行。
我可以想到一些可能发生这种情况的潜在场景,但没有找到任何确认:
- 如果您授予了一些总括权限,然后撤销了总括权限所暗示的更细化的权限,则可能会出现“R”行(细化权限将显示为“R”)。到目前为止,我还没有找到任何这样的权限。
- 当 SQL 正在处理命令时,“R”行可能会非常短暂地出现
REVOKE
,然后整行就会消失。我没有观察到这一点,但大概只有一个很小的时间窗口才会出现。