2014-09-18 221 views
4

所以我们有一个SSRS SQL 2008R2服务器(AServer),我们已经部署了一些报告。有问题的报告在AServer上运行,并在BServer上运行存储过程以获取其数据集。在运行报告时,出现以下错误:SQL Server Reporting Services权限错误

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,但仍然没有运行精确sproc的权限?用户的权限实际上是否将查看报告委派给BServer(我见过与IIS类似的voodoo)?

我已经尝试和失败在:

我的出发点是检查SQL日志中MSDB上看到的身份验证失败可能发生。在苦读这些日志时没有发现这样的运气。我期待像“INTRA \ sqlserviceaccount没有足够的权限来运行SomeDb.SomeProc”。

我的第二个目标是确保运行sql报告的帐户也在远程服务器上列出。它不是,所以我在AD中找到它并添加它。我还将它作为db_datareader和db_datawriter添加到了db中(不需要)(< ==)。

第三次攻击是为了确保RSExec角色在远程服务器上。这也没有效果,而且我对于实际上做的事情感到迷茫,除了耗尽我的服务器配置。

任何帮助,非常感谢。从报告(或共享数据集)在报告管理

回答

4

让我们的工作向后:

  1. 查找其上的共享数据集或报表所依赖的数据来源。此示例显示共享数据集的数据源。

Data Source for shared dataset

  • 导航到该数据源的属性。找到凭证部分并找到配置的用户名。如果选择Windows integrated security,用户凭据正在从客户端浏览器报表服务器数据库通过。以下示例显示数据源凭据存储在报表服务器中。
  • Data Source properties

  • 回到上的SQL Server数据库实例,查找到来自步骤2的登录被映射数据库和数据库用户。授予此用户EXECUTE权限在有问题的存储过程。
  • +1

    @Byron Eargle圣洁的跳跃千斤顶,就是这样。当我查看sproc本身的privvies时,我没有看到我认为我拥有的sqlservice acct。我遵循了步骤1和2,然后完成了步骤3,现在它的行为正确。 – 2014-09-18 21:30:40