Табличный параметр в хранимой процедуре добирается, выполняются, полномочия отклонили ошибку

Я получаю следующую ошибку при вызове хранимой процедуры, которая имеет табличный параметр как один из параметров

EXECUTE разрешение было отклонено на объектном 'ValidationErrors'

ValidationErrors является TVP, созданным со следующим утверждением:

CREATE TYPE [dbo].[ValidationErrors] AS TABLE(
    [ErrorMessage] [varchar](255) NOT NULL
)

У пользователя, выполняющего хранимую процедуру, есть полномочия на исполнение на хранимой процедуре. Однако я все еще получаю вышеупомянутую ошибку. Какие-либо идеи?

21
задан Michał Powaga 24 March 2016 в 13:03
поделиться

1 ответ

Я думаю, что вам также может понадобиться предоставить пользователю права на тип.

Ссылки для GRANTing permissions to types:
SQL 2005
SQL 2008

Update:
Re: почему вы должны предоставлять разрешения на тип, когда у вас есть разрешения на sproc. Я не знаю окончательной причины, но BOL говорит:

В отличие от типов, определяемых пользователем, создаваемых с помощью с помощью sp_addtype, роль публичной базы данных роль не получает автоматически разрешение REFERENCES на типы, которые создаются с помощью CREATE TYPE. Это разрешение должно быть предоставлено отдельно.

Обновление 2: Чтобы GRANT EXECUTE разрешения, вы должны выполнить это в SSMS:

GRANT EXECUTE ON TYPE::dbo.ValidationErrors TO SomeUser;
36
ответ дан 29 November 2019 в 20:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: