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

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

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

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