OBJECT_NAME(@@ PROCID)的结果从哪里获得? (错字纠正)

时间:2015-10-04 16:25:35

标签: sql-server execute-as

我有一个存储过程,其中EXECUTE AS是另一个访问权限非常有限的用户。当我运行该存储过程时,我无法从OBJECT_NAME(@@ PROCID)获得结果。 @@ PROCID确实有一个值,因此它是失败的查找。

我认为这是一个权限问题,有人可以告诉我从哪里获取存储过程的名称?也许我可以通过向EXECUTE AS用户授予一些SELECT权限来解决我的问题。

如果有人有任何其他想法,LMK。我现在正在硬编码存储过程名称。

1 个答案:

答案 0 :(得分:0)

来自OBJECT_ID的文档:

  

用户只能查看用户拥有或用户被授予权限的安全性元数据。这意味着,如果用户对该对象没有任何权限,那么元数据发射的内置函数(如OBJECT_ID)可能会返回NULL。

同样further reading也会告诉您需要授予用户对象的任何权限(即SELECT,EXECUTE等)