对于 role db_denycustomer
,我只希望customer 表的列代码是 SELECTable,而其他的都不是。所以我这样做了:
DENY SELECT ON dbo.customer TO db_denycustomer
GRANT SELECT ON dbo.customer (code) TO db_denycustomer
...而且效果很好。凉爽的!但是,为什么?
我在相关文章中读到的是权限堆栈,但DENY
优先。相反,在我的例子中,似乎最后一个权限“查询”优先。果然,如果我倒序执行,后者DENY
也隐藏了代码栏。
你能详细说明一下吗?
我还包括了我测试过的用户的默认值db_datawriter
和角色。db_datareader
这是为向后兼容而提供的记录行为。文档摘录: