Откуда получается результат OBJECT_NAME(@@PROCID)? (опечатка исправлена)
У меня есть хранимая процедура, в которой EXECUTE AS есть другой пользователь с очень ограниченным доступом. Я не могу получить результаты от OBJECT_NAME(@@PROCID) при запуске этой хранимой процедуры. @@PROCID имеет значение, поэтому поиск не выполняется.
Я думаю, что это проблема с разрешениями, так может кто-нибудь сказать мне, откуда берется имя хранимой процедуры? Возможно, я смогу исправить мою проблему, предоставив некоторые разрешения SELECT пользователю EXECUTE AS.
Если у кого есть другие идеи, ЛМК. Я сейчас жестко запрограммировал имя хранимой процедуры.
1 ответ
Из документации для OBJECT_ID
:
Пользователь может просматривать только метаданные защищаемых объектов, которыми он владеет или на которые ему было предоставлено разрешение. Это означает, что встроенные функции, генерирующие метаданные, такие как OBJECT_ID, могут возвращать NULL, если у пользователя нет прав доступа к объекту.
Кроме того, дальнейшее чтение также скажет вам, что вам нужно предоставить пользователю любое разрешение на объект (например, SELECT, EXECUTE и т. Д.)