我目前已經獲得了一組報告,其中的一些常見功能位於.rdl文件中的代碼塊中。這顯然是一個可維護性問題,我想知道是否有人知道這些不同的報告共享一個通用代碼庫的方式?從SQL Server 2005 Reporting Services報告調用.Net程序集?
理想情況下,我想將一個.Net程序集附加到我的Reporting Services項目中,我的所有報告都可以訪問和調用函數。每當需要對通用功能進行更改時,這將節省嘗試更新和重新部署大約100個報告的麻煩。
有什麼建議嗎?
我目前已經獲得了一組報告,其中的一些常見功能位於.rdl文件中的代碼塊中。這顯然是一個可維護性問題,我想知道是否有人知道這些不同的報告共享一個通用代碼庫的方式?從SQL Server 2005 Reporting Services報告調用.Net程序集?
理想情況下,我想將一個.Net程序集附加到我的Reporting Services項目中,我的所有報告都可以訪問和調用函數。每當需要對通用功能進行更改時,這將節省嘗試更新和重新部署大約100個報告的麻煩。
有什麼建議嗎?
從Visual Studio中的報表屬性中,在'參考'選項卡上添加包含託管代碼的部件的詳細信息。可以使用指定的實例名稱從報表內的表達式調用此代碼。
該程序集既可以存儲在Visual Studio的GAC或PrivateAssemblies目錄中,也可以部署到Reporting Services服務器上的Report Service'bin'目錄。欲瞭解更多信息,請參考How to use custom assemblies or embedded code in Reporting Services
以下文章列出了從SSRS報告調用.Net代碼的所有不同方式。 Extending Microsoft SQL Server 2000 Reporting Services with Custom Code
如果所有這些報告都針對同一臺服務器運行,則需要考慮的另一個選項是在數據庫中使用.Net存儲過程來保存代碼。
非常感謝的傢伙,我現在可以從我的報告中打電話給我的程序集。
問題補充: 有一個命名空間,當我創造我的裝配,使得它知道在報表設計對象,如字段和參數的,我可以包括哪些?如果我能以強類型的方式向我的程序集傳遞字段集合,這將非常棒。
而答案:一對夫婦的搜索的時間顯示,添加\ Program Files文件\微軟的Visual Studio 8 \ Common7 \ IDE \ PrivateAssemblies \ Microsoft.ReportingServices.ProcessingObjectModel.dll在我的程序集的引用讓我訪問各種Reporting Services類型,如字段和參數。請注意,在Reporting Services 2008中,namespace changes。
我有很多的痛苦,所以我希望這可以幫助別人。你可以從MSDN文章中得到它,但是下面有幾點我認爲可以通過這一點加快速度。
不要忘記添加到您的rssrvpolicy.config文件:
<CodeGroup class="UnionCodeGroup"
version="1"
PermissionSetName="FullTrust"
Name="MyCodeGroup"
Description="Code group for my data processing extension">
<IMembershipCondition class="UrlMembershipCondition"
version="1"
Url="C:\pathtocustomassembly\customassembly.dll"
/>
</CodeGroup>
我忘了這樣做,我恨它一段時間。
另外不要忘了你的新的DLL命中兩個下列文件夾爲2005:
Program Files\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies
Program Files\Microsoft SQL Server\MSSQL.3\Reporting Services\ReportServer\bin
加不與你的裝配使用log4net的。我無法讓它工作。也許有人可以但不是我。
另外,如果你像我一樣搞砸了,你將無法刪除文件,直到你關閉Visual Studio。
Plus使您的方法共享或靜態。這很容易。
創建一個部署批處理文件。例如:
@ECHO OFF
REM Name: SRSDeploy_Local.bat
REM
REM This batch files copies my custom assembly to my Reporting Services folders.
REM
REM This is the SQL Server 2005 version:
copy "C:\Projects\Common\lib\SCI.Common.SSRSUtils.dll" "C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies"
copy "C:\Projects\Common\lib\SCI.Common.SSRSUtils.dll" "C:\Program Files\Microsoft SQL Server\MSSQL.2\Reporting Services\ReportServer\bin"
最後,在預覽之前構建您的報告。
如果它建立了,你很可能就在你的路上。
除...
你不能把它部署到生產報表服務器,因爲你永遠得到以下錯誤:
加載時出錯代碼模塊
這是我現在正在工作。
我正在將我的dll複製到錯誤的生產服務器上。確保使用上面批處理文件中使用的相同類型的路徑將您的dll複製到生產服務器。 – Daver 2009-10-10 02:34:44