我正在使用SQL Server 2008 R2,并且创建了一个TVP,希望将其用作存储的proc的参数,但是我收到一条消息,提示找不到它或我没有权限。
我可以在脚本或存储的proc的主体中使用TVP,但是当我尝试将其用作参数时,会出现错误。
有什么想法吗?
编辑: 为澄清起见,我得到的错误是在创建存储过程
为了使调用者可以使用PROC带有表值参数的,您需要(直观地)将类型的执行权限授予TVP调用PROCIE的用户
PROC
TVP
GRANT EXECUTE ON TYPE::[schema].[MyTVP] to [SomeRole]
编辑
我相信我能够重现此问题,即从授予用户的最小权限集开始。至关重要的步骤是让TVP的DBO或架构所有者授予您以下访问权限,以便能够在中使用它PROC(没有此访问权限,我可以声明TVP类型的松散变量,但不能在PROC中使用它)。
GRANT REFERENCES ON TYPE::[schema].[MyTVP] to YOURROLE -- Or User.
在此处授予参考 (显然,您还将需要CREATE PROCEDURE许可,以及对PROC中使用的任何对象的相关访问权限)
CREATE PROCEDURE
GRANT EXECUTE根据最初的回答,PROC的消费者还需要获得对Proc和Type的许可。
GRANT EXECUTE