文章編號: 842419 - 上次校閱: 2007年4月3日 - 版次: 2.2

如何報告服務中的某一報表中參考的自訂組件授與權限

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。

在此頁中

全部展開 | 全部摺疊

結論

本文將告訴您存取在您的環境中資源沒有足夠的權限在報表中的自訂組件時所發生的問題。本文也提供權限授與自訂報表中所使用的組件的步驟。如果要執行此動作請依照下列步驟執行:
  1. 判斷提示權限,在您自訂組件。
  2. 讓自訂組件的可用報表設計師和報表伺服器。
  3. 參考自訂組件中您報表。
  4. 修改程式碼存取安全性設定,如您自訂組件。

簡介

如果自訂組件沒有足夠的權限,存取自訂組件的報表可能無法成功地呈現。本文將告訴您,如何修改原則組態檔,將額外的權限授與自訂組件存取的報表。

其他相關資訊

您使用 Microsoft.NET] 架構來建立自訂組件,並接著存取您的報表中的自訂組件,並預覽報表設計工具中的報表之後,報表可能無法成功地呈現。 不過,如果您在報表設計工具,或如果您使用報表管理員 」 來檢視報表中的 DebugLocal 模式中執行相同的報告下列的錯誤可能會轉譯而非參考自訂組件的輸出報表中:
# 錯誤
此外,您可能會收到錯誤訊息,當 DebugLocal 模式中執行報表時,會類似於下列報表設計工具中:
為型別 System.Security.Permissions.FileIOPermission mscorlib,版本的使用權限要求 = 1.0.5000.0 文化特性中性 PublicKeyToken = = b77a5c561934e089 失敗。
當自訂您的報表中所參考的組件沒有足夠的權限時,可能就會發生這個問題。

附註如果您預覽報表設計工具中的報表,報表會執行所有報表運算式使用完全信任使用權限集合。報表並不會使用安全性原則設定。

所需的權限授與自訂組件,請依照下列步驟執行:
  1. 判斷提示權限自訂組件中。
  2. 報表設計師和報表伺服器,讓自訂組件可供使用。
  3. 參考自訂組件,在您的報表中。
  4. 修改您的自訂組件程式碼存取安全性設定。

判斷提示您自訂的組件的權限

若要取得自訂組件中執行程式碼所需的權限,您必須在您的自訂組件程式碼中判斷提示所需的權限。

附註這一節中所提供的範例使用 C# 程式碼。

For example, if you access data in Microsoft SQL Server tables by using the "System.Data.SQLClient" namespace in your custom assembly, you must add the following code to your custom assembly before you use the "System.Data.SQLClient" namespace:
System.Data.SqlClient.SqlClientPermission pSql = new SqlClientPermission(System.Security.Permissions.PermissionState.Unrestricted);
pSql.Assert();
If you access a file in your custom assembly, you must add the following code to your custom assembly before you access the file:
FileIOPermission filePerm = new FileIOPermission(FileIOPermissionAccess.Read, "C:\TestFile");
filePerm.Assert();
Similarly, if you access a Web service in your custom assembly, you must add code that is similar to the following to assert the Web permissions:
System.Text.RegularExpressions.Regex urlRegEx = new System.Text.RegularExpressions.Regex(@"http://www\.webcontinuum\.net/.*");
System.Net.WebPermission p = new System.Net.WebPermission(NetworkAccess.Connect,urlRegEx);

p.Assert();
For more information about asserting permissions in your custom assembly, visit the following MSDN Web site:
http://msdn2.microsoft.com/en-us/library/aa179495(SQL.80).aspx (http://msdn2.microsoft.com/en-us/library/aa179495(SQL.80).aspx)

讓自訂組件可用,報表設計師和報表伺服器

報表設計師和報表伺服器,讓您自訂的組件使用,您必須將自訂組件複製到下列資料夾:
  • Installation Drive: \Program Files\Microsoft SQL Server\80\Tools\Report 設計工具
  • Installation Drive: \Program Files\Microsoft SQL Server\MSSQL\Reporting Services\ReportServer\bin

參考自訂組件,在您的報表中

若要參考自訂組件在您的報表中,請依照下列步驟執行:
  1. 在 Microsoft Visual Studio.NET 2003年中開啟報表專案。
  2. 開啟報表必須參考自訂組件。
  3. 在 [報表] 功能表上按一下 報表內容
  4. 在 [報表屬性] 對話方塊按一下 [參考] 索引標籤。
  5. 參考,] 下按一下省略符號按鈕 [組件名稱] 欄標題旁的。
  6. 在 [加入參考] 對話方塊中,按一下 [瀏覽]。
  7. 在 [選取元件] 對話方塊找出和按一下自訂的組件並按一下 [開啟舊檔]。
  8. 在 [加入參考] 對話方塊中,按一下 [確定]
  9. 在 [報表屬性] 對話方塊中,按一下 [確定]

修改您的自訂組件程式碼存取安全性設定

若要將所需的權限授與自訂組件,您必須修改程式碼存取安全性設定對應報表設計師和報表伺服器原則組態檔中。要這麼做,請您執行下列步驟:
  1. 為您指定所需的權限的自訂組件建立使用權限集合項目和程式碼群組項目。要這麼做,請您執行下列步驟:
    1. 按一下 [開始],指向 [設定],然後再按一下 [控制台]
    2. 在控制台中按兩下 [系統管理工具]。
    3. 在 [系統管理工具] 視窗中,連按兩下 [Microsoft.NET Framework 1.1 組態
    4. 在.NET 組態 1.1 視窗左邊的窗格中, 展開 [執行階段安全性原則]。
    5. 執行階段安全性原則 下, 展開 [電腦]。
    6. 電腦在 [使用權限集合,] 上按一下滑鼠右鍵,然後按一下 [新增]。
    7. 識別新的使用權限集合] 頁面上,按一下 [建立新的使用權限集合
    8. 在 [名稱] 方塊中鍵入 TestPermissions,然後再按 [下一步]
    9. 指派個別使用權限] 使用權限集合] 頁面上按一下 [可用的權限] 清單中的 [安全性],然後按一下 [新增]。
    10. 在 [使用權限設定] 對話方塊按一下 [授與組件下列安全性權限,並按一下以選取下列核取方塊:
      • 啟用組件執行
      • 判斷提示已授予任何權限
      附註您也可以開啟其他根據您的需求的所列的權限設定。
    11. 按一下 [確定]
    12. 指派個別使用權限] 使用權限集合] 頁面上將任何額外的權限從 可用的使用權限] 清單新增到 已指派權限 清單。
    13. 按一下 [完成]。
    14. .NET 組態 1.1] 視窗中展開 [電腦] 下的 程式碼群組]。
    15. 在 [程式碼群組All_Code,] 上按一下滑鼠右鍵,然後按一下 [新增]。
    16. 識別新的程式碼群組 上頁面]、 按一下 [建立新的程式碼群組]、 在 [名稱] 方塊中輸入 TestCodeGroup],然後按一下 [下一步]
    17. 在 [選擇條件類型] 頁面中,按一下 [選擇條件類型,此程式碼群組] 清單中的 [URL]。
    18. 鍵入您的自訂組件的絕對路徑 (Installation Drive: \Program Files\Microsoft SQL Server\80\Tools\Report Designer\ Custom assembly name,例如) 在 [URL] 方塊的 [報表設計工具] 資料夾中再按 [下一步
    19. 指派使用權限集合至程式碼群組] 頁面上按一下 [使用現有的使用權限集合,] 然後按一下 [在清單中的 [TestPermissions]。
    20. 按一下 [下一步],然後再按一下 [完成]
    根據到您的規格在 Security.config 檔案在您的電腦上建立使用權限集合和對應到您的自訂組件程式碼群組。
  2. 為報表伺服器安全性原則組態檔中在自訂組件中新增使用權限集合和對應程式碼群組。要這麼做,請您執行下列步驟:
    1. 開啟 Security.config 檔案、 Rspreviewpolicy.config 的檔案和 Rssrvpolicy.config 檔案。

      附註下列清單提供 Security.config 檔案]、 [Rspreviewpolicy.config 的檔案] 和 [Rssrvpolicy.config 檔案的預設位置。
      • 預設情況下,Security.config 檔案位於 Installation Drive: \WINDOWS\Microsoft.NET\Framework\v1.1.4322\config\security.config 資料夾。
      • 預設情況下,[Rspreviewpolicy.config 位於 Installation Drive: \Program Files\Microsoft SQL Server\80\Tools\Report Designer\rspreviewpolicy.config 資料夾。
      • 預設情況下,Rssrvpolicy.config 資料夾位於 Installation Drive: \Program Files\Microsoft SQL Server\MSSQL\Reporting Services\ReportServer\rssrvpolicy.config 資料夾。
    2. 將對應的 PermissionSet 元素複製到 TestPermissions 使用權限集合從 Security.config 檔案。
    3. 貼上 PermissionSet 項目,對應到 TestPermissions 使用權限為 NamedPermissionSets 項目的最後一個子項目集合 Rspreviewpolicy.config 檔案和 Rssrvpolicy.config 檔案中。
    4. 將對應 CodeGroup 項目複製到 TestCodeGroup 程式碼群組從 Security.config 檔案。
    5. 貼上 CodeGroup 項目,第一個 CodeGroup 元件之後,對應到 TestCodeGroup 程式碼群組在 Rspreviewpolicy.config 檔案和 Rssrvpolicy.config 檔案中。
    6. 移除 PermissionSet 項目,對應到 TestPermissions 使用權限集合和 CodeGroup 項目,從 Security.config 檔案對應到 TestCodeGroup 程式碼群組。
    7. 儲存 Security.config 檔案、 Rspreviewpolicy.config 的檔案及 Rssrvpolicy.config 檔案。
在您的報表中存取自訂組件並在 DebugLocal 模式中執行報表之後,報表呈現成功。



?考

如需有關在報告中的程式碼存取安全性服務,請造訪下列 MSDN 網站:
http://msdn2.microsoft.com/en-us/library/aa902638(SQL.80).aspx (http://msdn2.microsoft.com/en-us/library/aa902638(SQL.80).aspx)
如需有關使用自訂組件的報表服務中的報告,請造訪下列 MSDN 網站:
http://msdn2.microsoft.com/en-us/library/aa179513(SQL.80).aspx (http://msdn2.microsoft.com/en-us/library/aa179513(SQL.80).aspx)
如需有關偵錯自訂組件,在 [報表服務的詳細資訊,請造訪下列 MSDN 網站:
http://msdn2.microsoft.com/en-us/library/aa179526(SQL.80).aspx (http://msdn2.microsoft.com/en-us/library/aa179526(SQL.80).aspx)


這篇文章中的資訊適用於:
  • Microsoft SQL Server 2000 Reporting Services
關鍵字:?
kbmt kbpolicy kbpermissions kbsettings kbsecurity kbdeployment kbreport kberrmsg kbinfo KB842419 KbMtzh
機器翻譯機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:842419? (http://support.microsoft.com/kb/842419/en-us/ )
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。