加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 08:56:46 所属栏目:MsSql教程 来源:网络整理
导读:我正在使用SQL Server 2008 R2并且我创建了一个TVP,我想将其用作存储过程的参数,但是我收到一条消息,说它无法找到或者我没有权限. 我可以在脚本中或在存储过程的主体中使用TVP,但是当我尝试将其用作参数时,我得到了错误. 有什么想法吗? 编辑:为了澄清,我得
我正在使用SQL Server 2008 R2并且我创建了一个TVP,我想将其用作存储过程的参数,但是我收到一条消息,说它无法找到或者我没有权限.

我可以在脚本中或在存储过程的主体中使用TVP,但是当我尝试将其用作参数时,我得到了错误.

有什么想法吗?

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

解决方法

为了让呼叫者使用带有表值参数的PROC,您需要(不直观地)TVP类型上的 grant execute permissions给那些呼叫PROC的人,即
GRANT EXECUTE ON TYPE::[schema].[MyTVP] to [SomeRole]

编辑

我相信我能够复制这个问题,即从授予用户的最小权限集开始.至关重要的一步是让您的TVP的DBO或Schema所有者授予您以下访问权限,以便能够在PROC中使用它(没有此访问权限,我能够声明TVP类型的松散变量,但不能在PROC中使用它).

GRANT REFERENCES ON TYPE::[schema].[MyTVP] to YOURROLE -- Or User.

Grant Reference here
(显然,您还需要CREATE PROCEDURE权限,以及对PROC中使用的任何对象的相关访问权限)

PROC的消费者还需要根据初始答案对Proc和Type进行GRANT EXECUTE许可.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读