Tsql 通过链接服务器的嵌套视图授予select权限被拒绝

Tsql 通过链接服务器的嵌套视图授予select权限被拒绝,tsql,sql-server-2008-r2,linked-server,Tsql,Sql Server 2008 R2,Linked Server,我在嵌套视图中遇到了一个有趣的权限问题,我认为这不是由所有权链接引起的。提到的所有服务器都是SQL Server 2008 R2 我有一个链接服务器,配置为使用特定的登录名,例如Bill。在我的远程服务器上,我有一个视图,我们称之为ViewA,它从另一个视图中选择,我们称之为ViewB 我可以通过链接服务器进行选择,效果很好: SELECT * FROM [LINKEDSERVER].[DATABASE].[SCHEMA].[VIEWA] 这将返回一个满意的结果集,没有问题 现在,我有一个存储

我在嵌套视图中遇到了一个有趣的权限问题,我认为这不是由所有权链接引起的。提到的所有服务器都是SQL Server 2008 R2

我有一个链接服务器,配置为使用特定的登录名,例如Bill。在我的远程服务器上,我有一个视图,我们称之为ViewA,它从另一个视图中选择,我们称之为ViewB

我可以通过链接服务器进行选择,效果很好:

SELECT * FROM [LINKEDSERVER].[DATABASE].[SCHEMA].[VIEWA]
这将返回一个满意的结果集,没有问题

现在,我有一个存储过程,它试图从同一个视图进行查询。它使用的是同一个链接服务器,记住,它使用的是同一个登录名Bill

当我通过management studio执行存储过程时,management studio又通过链接服务器查询ViewA,我得到:

选择ViewB上的权限被拒绝

链接服务器正在使用的登录名Bill是对视图a具有显式访问权限的角色的一部分。两个视图都是同一架构的一部分,所有对象都由dbo拥有

请注意,它并不是在抱怨ViewA,该法案有明确的权利,而是在抱怨ViewB,因为所有权链接,该法案应该有权利

我不明白为什么我可以直接通过账单链接服务器进行查询,但是存储过程失败了


有什么想法吗?

角色有权从[ViewA]中进行选择,但您尚未确认对存储过程的权限。您很可能需要运行类似于以下内容的操作:

GRANT EXECUTE ON [InsertProcedureNameHere] TO [InsertRoleNameHere];
有关赠款声明的更多信息,请参见:

您是从SQL Server management studio调用SP,还是从application.through management studio调用SP。编辑以澄清。