【发布时间】:2015-07-29 11:55:33
【问题描述】:
SQL Server 2008 R2 环境:
我们有如下声明:
DENY VIEW DEFINITION TO Foo;
这在数据库级别上操作,因此它将拒绝数据库中所有对象的 VIEW DEFINITION 权限。
到目前为止很清楚。
如果对于该数据库中的一个对象,您仍然希望 Foo 用户能够查看定义?
我尝试在对象级别撤销数据库级别 DENY:
REVOKE VIEW DEFINITION ON OBJECT::[dbo].[storedProcFoo] FROM Foo;
用户仍然无法查看定义。
我试图在对象级别重新授予它:
GRANT VIEW DEFINITION ON OBJECT::[dbo].[storedProcFoo] TO Foo;
用户仍然无法查看定义。 (我知道我在数据库级别有一个 DENY 优先级,所以我真的没想到它会像这样工作)
从逻辑上讲,它应该可以工作: DENY VIEW DEF 在数据库级别, 然后 REVOKE 对数据库中少数异常对象的 DENY。
我在这里缺少什么? 请不要告诉我我必须拒绝查看所有单个对象的 DEF :)
【问题讨论】:
标签: sql sql-server tsql security sql-server-2008-r2