小编典典

使用SQL Server表值参数(TVP)作为存储的proc参数需要什么权限?

sql

我正在使用SQL Server 2008 R2,并且创建了一个TVP,希望将其用作存储的proc的参数,但是我收到一条消息,提示找不到它或我没有权限。

我可以在脚本或存储的proc的主体中使用TVP,但是当我尝试将其用作参数时,会出现错误。

有什么想法吗?

编辑: 为澄清起见,我得到的错误是在创建存储过程


阅读 197

收藏
2021-04-22

共1个答案

小编典典

为了使调用者可以使用PROC带有表值参数的,您需要(直观地)将类型的执行权限授予TVP调用PROCIE的用户

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中使用的任何对象的相关访问权限)

GRANT EXECUTE根据最初的回答,PROC的消费者还需要获得对Proc和Type的许可。

2021-04-22