代码之家  ›  专栏  ›  技术社区  ›  jcollum

如果一个对象在sys.database中没有任何条目,“permissions are all of its permissions assumed to be“grant”?

  •  0
  • jcollum  · 技术社区  · 16 年前

    假设我有一个函数可以在许多存储过程中访问。如果函数中没有条目 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 回复  |  直到 16 年前
        1
  •  1
  •   Remus Rusanu    16 年前

    在任何事情上,都不存在隐含的拨款。“从存储过程访问的表”或“从存储过程访问的函数”通常是通过 ownership chaining :

    当多个数据库对象访问时 依次,顺序 被称为链条。[…]当通过 链,SQL Server首先比较 对象的所有者 调用对象。这就是 链中的上一个链接。如果两者 对象拥有相同的所有者, 对引用对象的权限 不计算。