因此,我们有一个SSRS SQL 2008R2服务器(AServer),我们已将一些报表部署到该服务器。有问题的报告在AServer上运行,并在BServer上运行存储的proc以获取其数据集。运行报告时,出现以下错误

An error has occurred during report processing. (rsProcessingAborted)
Query execution failed for dataset 'ReportData'. (rsErrorExecutingCommand)
The EXECUTE permission was denied on the object 'pSomeStoredProc',
 database 'SomeDb',      schema 'dbo'.


我最大的问题是,它不会告诉我允许被拒绝的级别。报表在AServer上运行的帐户是否没有凭据可以转移到BServer?它可以进入BServer,但仍然没有运行该确切proc的权限吗?用户的特权实际上是否在查看被委派给BServer的报告(我已经看到IIS发生了类似的伏都教)?

我尝试过的失败之处:

我的出发点是检查msdb中的SQL日志,以查看可能在哪里发生身份验证失败。翻阅这些原木时没有发现这种运气。我期待类似“ INTRA \ sqlserviceaccount的权限不足,无法运行SomeDb.SomeProc”。

我的第二个目标是确保在远程服务器上也列出了运行sql报告的帐户。并非如此,因此我在AD中找到并添加了它。我也将它作为db_datareader和db_datawriter(
第三次攻击是确保RSExec角色在远程服务器上。那也不起作用,我除了迷住服务器的配置之外,还迷失了自己的实际工作。

任何帮助是极大的赞赏。

最佳答案

让我们从报表(或共享数据集)中在报表管理器中向后工作:


查找共享数据集或报表所依赖的数据源。本示例显示了共享数据集的数据源。





导航到该数据源的属性。找到凭据部分并找到配置的用户名。如果选择Windows integrated security,则会从客户端浏览器→报表服务器→数据库传递用户凭据。下例显示了数据源凭据存储在报表服务器中。





返回SQL Server数据库实例,找到步骤2中的登录名映射到的数据库和数据库用户。授予该用户EXECUTE对所涉及的存储过程的权限。

10-08 19:44