??????? 一位朋友提出個問題:集成到 SQL Server 2005 中的 Reporting Services 已經將報表模板發布到 IIS 服務器,客戶端通過瀏覽器訪問時,默認會彈出 Windows 集成身份驗證的對話框。如果在 IIS 配置里面把允許匿名( IUSR_** )訪問的選項勾選,客戶端再次訪問的時候,會提示 IUSR_** 訪問權限不足。
?
??? 對于這個問題,除了要設置 IIS 允許匿名訪問外,還需要設置 Reporting Services 站點的訪問權限和 SQL Server 中數據源的用戶訪問權限。
??? 下面我將把需要做的步驟列出來,大家注意前提是使用 Visual Studio .NET 2005 已經正確的發布了 Reporting Services 制作的報表模板到 IIS 服務器。
???? 第一步:在運行 IIS 的 Web 服務器的本地訪問 http://localhost/reports ,這是 Reporting Services 的管理站點,在 Properties (屬性)頁面下添加一個只有 Browser (瀏覽者)權限的新 Role (角色)。注意新角色的用戶名稱即 IUSR_** (匿名用戶)。
1、 ? 點擊“ New Role Assignment ”(分配新角色)
2、 ? 彈出的 IE 窗口中, Group or user name (組或用戶名) 文本框輸入 IUSR_** (匿名用戶)。
3、 ? 勾選 Browser (瀏覽者)權限,點 OK 按鈕確定。
4、
?
返回到
http://localhost/reports
頁面中會新出現添加的
Role
(角色)。

第二步:除了要設置 Reporting Services 的 IIS 站點能允許 IUSR_** (匿名用戶)訪問外,首先需要設置 SQL Server 2005 中相應的數據庫能允許 IUSR_** (匿名用戶)有只讀的訪問權限。
?
在運行 SQL Servier 2005 的數據庫服務器中,打開 Microsoft SQL Server Management Studio 。在 Object Explorer (對象瀏覽器)中找到 Security (安全)目錄下的 Logins (登錄),在 Logins (登錄)圖標上面單擊右鍵快捷菜單上,選擇 New Login… (新登錄),彈出的對話框中設置。
1、 ? 右鍵菜單選擇 New Login… (新登錄)。
2、 ? 在 Windows authentication 中的 Login Name (登錄名)文本框,輸入 IUSR_** (匿名用戶)。
3、 ? 在 Defaults (默認)的 Database (數據庫)下拉列表框找到 Reporting Services 制作的報表模板的數據源數據庫。
4、
?
在
Select a page
(選擇一個頁面)列表中點擊“
Database Access
”(數據庫訪問)。
第三步:在
Data Access
頁面中,在
Databases accessible by this login
(數據庫默認登錄)選擇
Reporting Services
制作的報表模板的數據源數據庫。
1、 ? 選擇數據庫
2、 ? OK 確定
?
?

?
第四步:還是在 Microsoft SQL Server Management Studio 中,找到 Reporting Services 的數據源數據庫,在“ Security ”(安全)下的“ Users ”(用戶)下,找到剛才添加的 IUSR_** (匿名用戶)。設置他對該數據庫的訪問權限。
1、 ? 在 IUSR_** (匿名用戶)上右鍵菜單選 Properties (屬性)。
2、 ? 彈出的對話框中選擇 Permissions (許可)。
3、 ? 點擊“ Add Objects… ”(增加對象)。
4、 ? 再次彈出的對話框中選擇“ Add objects of types ”。
?
? ? ? 還是第四步:彈出的對話框中選 Databases (數據庫的)。
1、 ? Select Object Types (選擇對象類型)對話框選擇“ Databases ”(數據庫的)。
2、 ? OK 確定。
?
? 還是第四步:選擇 IUSR_** (匿名用戶)對該數據庫許可的操作。
?
1、 ????????? 在 Permissions for *** 列表中,找到 Select ,勾選。(注:你會看到 Connect 后面是默認勾選的,因為前面設置的默認登錄到數據庫就是該數據庫)
2、 ????????? OK 確定。
?
? 第五步:打開 IIS 管理器,設置 ReportServer 虛擬目錄為匿名訪問。
?
1、 ? 打開 IIS 管理器,在 ReportServer 虛擬目錄上單擊郵件選擇“ Properties ”(屬性)。
2、 ? 在“目錄安全性”頁面,找到“身份驗證和訪問控制”,點擊“編輯 ... ”。
3、 ? 在彈出的“身份驗證方法”對話框,勾選“啟用匿名訪問”。
4、 ? 在“用戶訪問需經過身份驗證”的位置,默認是選中“集成 Windows 身份驗證”。在這兒可以不用修改它。如果去掉了“集成 Windows 身份驗證”前面的勾選,則本機( IIS 服務器所在機器)對 Reporting Services Web 站點的訪問也成了匿名訪問。
5、 ? OK 確定。
?
? 第六步:再通過其他的客戶端機器訪問 Reporting Services Web 站點,則不再出現 Windows 用戶登錄窗口。對 Reporting Services Web 站點的訪問已經更改為匿名用戶的訪問。
?
?
?
但是注意,有個問題會同時出現。我們再次訪問 http://localhost/reports 時發現,將不能對 Reporting Services 的權限分配。打開 http://localhost/reports 能夠看到的是只有 Contents (內容)一個分類頁面的選項,“ Properties ”(屬性)選項則不會出現了。這該是 Reporting Services 產品刻意設計的,因為所有的用戶都可以匿名訪問 Web 站點了,權限如果放開了隨便改肯定不行。
?
?
再一想, http://localhost/reports 和 http://localhost/reportserver 這兩個虛擬目錄對應的物理目錄是不同的。一個 http://localhost/reports 對應的是 C:\Program Files\Microsoft SQL Server\MSSQL.3\Reporting Services\ReportManager ;而 http://localhost/reportserver 對應的是 C:\Program Files\Microsoft SQL Server\MSSQL.3\Reporting Services\ReportServer 。剛才對 \reportserver 的匿名訪問權限的修改又怎么影響到 \reports 了呢??
如果再需要修改 \reports 的“ Properties ”(屬性),唯一能做的就是重新打開 IIS 的管理器,去掉 \reportserver 中的“匿名訪問”選項,再來修改。修改后,再將 \reportserver 改為“匿名訪問”。
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
