SQL Server Reporting Services权限错误

时间:2014-09-18 20:44:28

标签: sql sql-server reporting-services permissions

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

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发生了类似的巫术)?

我在尝试和失败的地方:

我的出发点是检查msdb中的SQL日志,以查看可能发生auth故障的位置。在这些日志中苦苦挣扎时,没有发现这样的运气。我期待像“INTRA \ sqlserviceaccount没有足够的权限来运行SomeDb.SomeProc”。

我的第二个目标是确保运行sql报告的帐户也列在远程服务器上。事实并非如此,所以我在AD中找到它并添加它。我还将它作为db_datareader和db_datawriter(< ==不必要)添加到有问题的数据库中。

第三个攻击是确保RSExec角色位于远程服务器上。这也不起作用,除了我的服务器配置以外,我有点迷失在我实际做的事情上。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:4)

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

  1. 查找共享数据集或报告所依赖的数据源。此示例显示共享数据集的数据源。
  2. Data Source for shared dataset

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

      1. 返回SQL Server数据库实例,找到映射了步骤2的登录的数据库和数据库用户。授予此用户{%}}对相关存储过程的权限。