Я получаю следующую ошибку при вызове хранимой процедуры, которая имеет табличный параметр как один из параметров
EXECUTE
разрешение было отклонено на объектном 'ValidationErrors'
ValidationErrors является TVP, созданным со следующим утверждением:
CREATE TYPE [dbo].[ValidationErrors] AS TABLE(
[ErrorMessage] [varchar](255) NOT NULL
)
У пользователя, выполняющего хранимую процедуру, есть полномочия на исполнение на хранимой процедуре. Однако я все еще получаю вышеупомянутую ошибку. Какие-либо идеи?
Я думаю, что вам также может понадобиться предоставить пользователю права на тип.
Ссылки для 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;