SQL Server 2005中設定Reporting Services釋出web報表的匿名訪問

iSQlServer發表於2009-02-17
整合到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(角色)。

  SQL Server 2005中設定Reporting Services釋出web報表的匿名訪問

  第二步:除了要設定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製作的報表模板的資料來源資料庫。

  SQL Server 2005中設定Reporting Services釋出web報表的匿名訪問

  1、 選擇資料庫
  2、 OK確定

  SQL Server 2005中設定Reporting Services釋出web報表的匿名訪問

  第四步:還是在Microsoft SQL Server Management Studio中,找到Reporting Services的資料來源資料庫,在“Security”(安全)下的“Users”(使用者)下,找到剛才新增的IUSR_**(匿名使用者)。設定他對該資料庫的訪問許可權。

  1、 在IUSR_**(匿名使用者)上右鍵選單選Properties(屬性)。
  2、 彈出的對話方塊中選擇Permissions(許可)。
  3、 點選“Add Objects…”(增加物件)。
  4、 再次彈出的對話方塊中選擇“Add objects of types”。

  SQL Server 2005中設定Reporting Services釋出web報表的匿名訪問

  還是第四步:彈出的對話方塊中選Databases(資料庫的)。

  1、 Select Object Types(選擇物件型別)對話方塊選擇“Databases”(資料庫的)。
  2、 OK確定。

  SQL Server 2005中設定Reporting Services釋出web報表的匿名訪問

  還是第四步:選擇IUSR_**(匿名使用者)對該資料庫許可的操作。

  1、 在Permissions for *** 列表中,找到Select,勾選。(注:你會看到Connect後面是預設勾選的,因為前面設定的預設登入到資料庫就是該資料庫)
  2、 OK確定。

  SQL Server 2005中設定Reporting Services釋出web報表的匿名訪問

  第五步:開啟IIS管理器,設定ReportServer虛擬目錄為匿名訪問。

  1、 開啟IIS管理器,在ReportServer虛擬目錄上單擊郵件選擇“Properties”(屬性)。
  2、 在“目錄安全性”頁面,找到“身份驗證和訪問控制”,點選“編輯...”。
  3、 在彈出的“身份驗證方法”對話方塊,勾選“啟用匿名訪問”。
  4、 在“使用者訪問需經過身份驗證”的位置,預設是選中“整合Windows身份驗證”。在這兒可以不用修改它。如果去掉了“整合Windows身份驗證”前面的勾選,則本機(IIS伺服器所在機器)對Reporting Services Web站點的訪問也成了匿名訪問。
  5、 OK確定。

  SQL Server 2005中設定Reporting Services釋出web報表的匿名訪問

  第六步:再通過其他的客戶端機器訪問Reporting Services Web站點,則不再出現Windows使用者登入視窗。對Reporting Services Web站點的訪問已經更改為匿名使用者的訪問。

  SQL Server 2005中設定Reporting Services釋出web報表的匿名訪問

  但是注意,有個問題會同時出現。我們再次訪問http://localhost/reports 時發現,將不能對Reporting Services的許可權分配。開啟http://localhost/reports 能夠看到的是隻有Contents(內容)一個分類頁面的選項,“Properties”(屬性)選項則不會出現了。這該是Reporting Services產品刻意設計的,因為所有的使用者都可以匿名訪問Web站點了,許可權如果放開了隨便改肯定不行。

  SQL Server 2005中設定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改為“匿名訪問”。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-553571/,如需轉載,請註明出處,否則將追究法律責任。

相關文章