sql server 2012 - 无法授予对多语句表值函数的选择

Posted

技术标签:

【中文标题】sql server 2012 - 无法授予对多语句表值函数的选择【英文标题】:sql server 2012 - can't grant on select on multi-statement table-valued function 【发布时间】:2017-10-10 07:16:50 【问题描述】:

这是我的第一个问题,所以我说:你好!

我有一个多语句表值函数(称为 fn),它(当然)返回一个表。 我还创建了一个数据库角色(称为 dbr)。

我尝试添加权限 我的 dbr 可以从我的 fn 中选择。

所以我打开了 dbr,将我的 fn 添加到安全对象,授予 Select 并且我收到一个错误:密钥不能为空。参数名称:key(mscorelib)

这有点奇怪,因为在我的 fn 中,我在返回表变量上有主键,而且键不能为空。具体的键是用三个字段构建的:dateFrom、dateTo、article

功能完美运行,但我无法将其提供给我的 dbr 成员。

有什么建议吗?

【问题讨论】:

您知道吗:docs.microsoft.com/en-us/sql/t-sql/statements/… 功能和存储过程一样,应该授予执行权限。 【参考方案1】:

可能是没有打补丁的Management Studio的bug或者你点错地方了,为什么不用T-SQL代替呢?

grant select on dbo.fn to dbr

【讨论】:

你说得对,它可能是缺少补丁问题 - 我不是服务器管理员。所以,最后它适用于 T-SQL 而不是 SQL MS。谢谢!

以上是关于sql server 2012 - 无法授予对多语句表值函数的选择的主要内容,如果未能解决你的问题,请参考以下文章

SQL server 2008 权限

如何授予用户对 SQL Server 中数据库的读取权限?

我们如何分配权限来设置 SQL Server Reporting Services

如何向 sql server 用户授予 sendmail 权限?

用于授予 SQL Server Reporting Services 用户权限的 SQL 脚本

sql 权限授予 sql server