我有一个存储过程,其中EXECUTE AS是另一个访问权限非常有限的用户。当我运行该存储过程时,我无法从OBJECT_NAME(@@ PROCID)获得结果。 @@ PROCID确实有一个值,因此它是失败的查找。
我认为这是一个权限问题,有人可以告诉我从哪里获取存储过程的名称?也许我可以通过向EXECUTE AS用户授予一些SELECT权限来解决我的问题。
如果有人有任何其他想法,LMK。我现在正在硬编码存储过程名称。
答案 0 :(得分:0)
来自OBJECT_ID
的文档:
用户只能查看用户拥有或用户被授予权限的安全性元数据。这意味着,如果用户对该对象没有任何权限,那么元数据发射的内置函数(如OBJECT_ID)可能会返回NULL。
同样further reading也会告诉您需要授予用户对象的任何权限(即SELECT,EXECUTE等)