所以我们有一个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角色位于远程服务器上。这也不起作用,除了我的服务器配置以外,我有点迷失在我实际做的事情上。
非常感谢任何帮助。
答案 0 :(得分:4)
让我们从报告(或共享数据集)中在报告管理器中向后工作:
Windows integrated security
,则会从客户端浏览器→报表服务器→数据库传递用户凭据。以下示例显示数据源凭据存储在报表服务器中。