2014-09-18 175 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