如果一个对象在sys.database_permissions中没有条目,它的所有权限都被假定为“GRANT”?

时间:2010-06-03 15:35:10

标签: sql-server sql-server-2005

假设我有一个在许多存储过程中访问的函数。如果该函数在sys.database_permissions中没有条目,那么任何可以运行其中一个存储过程的帐户是否会自动运行该函数?

这是我正在使用的查询:

 exec sp_depends 'dbo.theFunction' 

 -- for each object in those results, run this query

 select *  
 from sys.database_permissions dp
 where 
 grantee_principal_id=USER_ID('theAccount')
 and 
 major_id=object_id('dbo.theFunction')
 and minor_id=0
 and ( state_desc = 'GRANT' or state_desc = 'SELECT' ) 

1 个答案:

答案 0 :(得分:1)

在任何事情上都没有隐含的GRANT。 “从存储过程访问的表”或“从存储过程访问的函数”的工作原理通常是ownership chaining

  

当多个数据库对象访问时   相继顺序,顺序   被称为连锁店。 [...]通过a访问对象时   链,SQL Server首先比较一下   拥有者的对象的所有者   调用对象。这是   链中的上一个链接。如果两者   对象拥有相同的所有者,   对引用对象的权限   没有评估。