2

我正在開發SQL Server 2008 R2上的SQL Server Reporting Services(SSRS)報告,並使用Report Manager作爲演示和測試報告的方法。我正在尋找一種方法來允許同一個域的用戶連接到報告管理器,並通過瀏覽器(而不是SharePoint)運行報告,而不會讓用戶對數據源有太多訪問權限。我目前已將每個用戶列爲數據庫的db_owner,數據庫與數據源關聯。我想限制這種訪問,並且我嘗試了db_datareader,但是這個級別不允許用戶運行這些報告,並給用戶這個錯誤:「無法創建到數據源'DBname'的連接。 (rsErrorOpeningConnection)」。Report Manager數據源的數據庫角色成員身份設置

我將用戶添加到報表管理器站點的方法:我選擇「站點設置」下的「安全」選項卡,然後選擇「新角色分配」,將用戶添加爲「系統用戶」。然後,我選擇工具欄上的「文件夾設置」,然後再次選擇「新角色分配」,將用戶添加爲「瀏覽器」。我曾嘗試將用戶添加爲「內容管理器」,但涉及到數據源時仍存在相同的錯誤。

我向數據源添加用戶的方法:從服務器的安全選項卡中選擇新登錄,將域\用戶名添加到「登錄名:」,使用Windows身份驗證並將默認數據庫從主服務器更改爲數據庫那就是報告數據源。然後,我選擇「用戶映射」並在數據源的數據庫旁邊添加一個檢查。在「數據庫角色成員身份:數據庫名稱」部分,我選擇了db_owner並且已經選擇了public。我已經包含了下面的截圖。 我的問題是我可以使用SSRS和報告管理器的「數據庫角色成員資格」,它不會像db_owner那麼廣泛,並且具有最好的安全性?我嘗試了db_datareader,但是當用戶運行報表時,他們無法連接到數據源。

我已經研究過這個問題,但我沒有找到任何細節接受添加用戶作爲我所描述的db_owner。 MSDN的行爲就好像報表管理器中的設置都是您需要爲用戶/報表設置才能訪問數據源的設置。我已經試過僅使用報表管理器設置和數據源的兩種設置,共享和嵌入式運行都沒有。

預先感謝您

回答

2

通常,在SSRS數據源將被設置爲使用一個固定的賬號,無論是Windows帳戶或SQL身份驗證。應該給該帳戶最低限度的數據庫權限:db_datareader是常見的。

然後如上所述通過報表管理器控制報表的安全性。這樣可以避免在更改用戶權限時更改數據庫本身的安全性。

但是,您上面描述的方法也應該如此。如果您的查詢是從表中選擇的標準SQL查詢,那麼您在用戶具有db_datareader訪問權限時看到的錯誤令人驚訝。如果您正在使用存儲過程,則還需要授予對這些存取程序的訪問權限。使用設置爲db_datareader的測試用戶帳戶;看看你是否可以通過SQL Server Management Studio連接並執行你的查詢。

根據您的安全要求,我會從報告中使用專用帳戶訪問數據庫,例如「ReportReader」。以該用戶身份開發和測試訪問數據庫的報告,並確保用戶具有最小的訪問權限,只讀和/或僅限於他們需要執行的表或過程。

用於訪問數據庫的憑證在數據源的屬性中設置。這是共享數據源經常被使用並且報告鏈接到共享數據源的原因之一: Data source properties

該屏幕截圖顯示了SQL服務器已驗證的帳戶在使用中。這可能很容易成爲固定的Active Directory帳戶;在這種情況下,請檢查「在...時用作Windows憑據」。

+0

如何啓用SQL Server數據庫上的報表管理器使用的專用帳戶?我確實有存儲過程爲每個報告,並根據您的信息在這裏我已經將數據源的用戶訪問級別從db_owner更改爲db_executor,但這仍然給用戶太多的訪問權限,不提到將每個用戶添加到數據源的麻煩。 – PerPlexSystem 2012-03-07 02:16:11

+0

使用數據源詳細信息編輯。 – 2012-03-07 03:23:35

+0

您的信息很好,但我仍然有困難。讓ReportReader用戶通過測試連接最值得關注。我通過SQL Server Management Studio添加用戶的步驟如下:在安全性下,創建一個新登錄名,輸入名稱,選擇SQL Server身份驗證並輸入與報告管理器匹配的簡單密碼,將默認數據庫設置爲master或datasourceDB(嘗試都)。在用戶映射下:我將用戶映射到datasourceDB,ReportDB和ReportDBTemp,我嘗試了db_datareader,db_owner和db_executor的不同組合。我不確定有什麼問題。 – PerPlexSystem 2012-03-08 19:37:01

相關問題