SQL Server 2005 Reporting Services レポートから .Net アセンブリを呼び出しますか?
-
09-06-2019 - |
質問
現在、.rdl ファイル内のコード ブロックに含まれる多数の一般的な関数を含む一連のレポートを入手しています。これには明らかに保守性の問題があり、これらのさまざまなレポートで共通のコードのライブラリを共有する方法を知っている人はいるだろうかと疑問に思います。
理想的には、.Net アセンブリを Reporting Services プロジェクトにアタッチし、すべてのレポートがアクセスして関数を呼び出すことができるようにしたいと考えています。これにより、共通の機能に変更を加える必要があるたびに、約 100 件のレポートを更新して再展開するという煩わしさから解放されます。
助言がありますか?
解決
Visual Studio 内のレポートのプロパティの [参照] タブで、マネージ コードを含むアセンブリの詳細を追加します。このコードは、指定されたインスタンス名を使用してレポート内の式から呼び出すことができます。
このアセンブリは、GAC または Visual Studio の PrivateAssemblies ディレクトリに保存でき、Reporting Services サーバー上のレポート サービスの 'bin' ディレクトリに展開できます。詳細については、を参照してください。 Reporting Services でカスタム アセンブリまたは埋め込みコードを使用する方法
他のヒント
私はこれで非常に苦労したので、これが誰かを助けることを願っています。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 を閉じるまでファイルを削除できません。
さらに、メソッドを共有または静的にします。簡単です。
導入バッチファイルを作成します。何かのようなもの:
@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"
最後に、プレビューする前にレポートを作成します。
それが構築されれば、おそらく目的地に向かっています。
を除外する...
常に次のエラーが発生するため、運用レポート サーバーに展開できません。
コードモジュールのロード中にエラーが発生しました
それが私が今取り組んでいることです。
次の記事には、SSRS レポートから .Net コードを呼び出すほぼすべてのさまざまな方法がリストされています。 カスタム コードによる Microsoft SQL Server 2000 Reporting Services の拡張
これらすべてのレポートを同じサーバーに対して実行する場合、考慮すべきもう 1 つのオプションは、データベース内で .Net ストアド プロシージャを使用してコードを保持することです。
皆さん、本当にありがとう。レポートから議会を招集できるようになりました。
補足質問:アセンブリを作成するときに、レポート デザイナー内のフィールドやパラメーターなどのオブジェクトを認識できるようにする名前空間はありますか?たとえば、フィールドのコレクションを厳密に型指定された方法でアセンブリに渡すことができれば、本当に素晴らしいと思います。
そして答えは次のとおりです。 数時間の検索の結果、\Program Files\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies\Microsoft.ReportingServices.ProcessingObjectModel.dll をアセンブリに参照として追加すると、フィールドなどのさまざまな Reporting Services の種類にアクセスできることがわかりました。およびパラメータ。Reporting Services 2008 では、 名前空間の変更.
GAC に展開する必要があります。http://www.developerdotstar.com/community/node/333