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

Where is result of OBJECT_NAME(@@PROCID) obtained from? (typo corrected)

我有一个存储过程,它以另一个访问权限非常受限的用户身份执行。当我 运行 该存储过程时,我无法从 OBJECT_NAME(@@PROCID) 获得结果。 @@PROCID 确实有一个值,所以它是失败的查找。

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

如果大家有其他想法,LMK。我现在正在对存储过程名称进行硬编码。

来自 OBJECT_ID 的文档:

A user can only view the metadata of securables that the user owns or on which the user has been granted permission. This means that metadata-emitting, built-in functions such as OBJECT_ID may return NULL if the user does not have any permission on the object.

此外 further reading 还会告诉您需要授予用户对该对象的 any 权限(即 SELECT、EXECUTE 等)