RDLレポートでRDLCを使用する場合


117

私は過去数週間にSSRS 2005/2008を研究しており、いくつかのサーバー側レポートを作成しました。一部のアプリケーションでは、その特定の状況についてRDLCを調べることを同僚から提案されました。私は今、RDLとRDLCの主な違いを理解しようとしています。

この情報を検索すると、せいぜい断片化された情報しか得られません。私はそれを学びました:

  • RDLCレポートには、データの取得方法に関する情報は保存されません。
  • RDLCレポートは、ReportViewerコントロールによって直接実行できます。

しかし、RDLCファイルと他の関連システム(レポートサーバー、ソースデータベース、クライアント)の関係についてはまだ完全には理解していません。

RDLCファイルをよく理解するために、それらの使用法がRDLファイルとどのように異なり、どのような状況でRDLよりもRDLCを選択するかを知りたいと思います。リソースへのリンクも歓迎します。

更新:

ASP.NETフォーラムのスレッドは、この同じ問題について説明します。それから、私は問題についていくつかのより良い理解を得ました。

RDLCの機能は、ReportViewerコントロールで完全にクライアント側で実行できることです。

  • これにより、Reporting Servicesインスタンスが不要になり、データベース接続も不要になりますが、次のようになります。
  • これは、レポートで必要なデータを手動で提供する必要があるという要件を追加します。

これが長所か短所かは、特定のアプリケーションによって異なります。

私のアプリケーションでは、とにかくReporting Servicesのインスタンスを使用でき、レポートに必要なデータをデータベースから簡単にプルできます。RDLCを検討する理由が残っていますか、それとも単にRDLを使用すべきですか?

回答:


84

私の経験から、両方について考えることはほとんどありません。

I. RDLレポートは、一般にHOSTEDレポートです。つまり、SSRSサーバーを実装する必要があります。これらは、レポート言語用のSQL ServerからのVisual Studioの組み込み拡張機能です。SSRSをインストールすると、「ビジネスインテリジェンス開発スタジオ」と呼ばれるアドオンが必要になります。これは、レポートを使用しない場合よりもレポートの操作がはるかに簡単です。

Rのレポート

Dの efinition

Lの angauge

RDLレポートの利点:

  1. サービスが実行されている環境でレポートをホストできます。
  2. アイテムまたは継承レベルでセキュリティを構成して、スタンドアロンの概念としてセキュリティを処理できます
  3. メールを送信するようにサービスを設定し(アクセスできるSMTPサーバーがある場合)、スケジュールに従ってファイルを保存できます
  4. 一般に「ReportServer」と呼ばれるデータベースがあり、公開されたレポートに関する情報を照会できます。
  5. これらのレポートには、ASP.NET、WPF(Winformコントロールblehを使用)、または.NETのWinformsで記述されたクライアントアプリケーションの 'ReportViewer'、または 'ProcessingMode.Remote'を使用してアクセスできます。
  6. ユーザーが表示および使用できるパラメーターを設定して、柔軟性を高めることができます。
  7. 接続文字列に使用するレポートの一部を「データソース」として構成したり、SQLクエリ、xml、またはその他のデータセットを「データセット」として構成したりできます。これらのパーツやその他のパーツは、定期的にデータをキャッシュするように保存および構成できます。
  8. サービスの.NETプロキシクラスは、http:// / ReportServer / ReportingService2010または/ ReportExecution2005で記述できます。次に、コードでSSRSレポートをホストするサーバーのサービスから直接、SSRSデータを電子メールで送信、保存、または操作するために、.NETでOWNメソッドを作成できます。 ReportService2010.asmxを使用してSharePointからSSRSレポートをプログラムでエクスポートする

欠点:

  1. SSRSは、他の機能と比較して、高速に起動するという点でワンキーです。ほとんどの人は、セキュリティポリシーと、VSの「アドオン」としてレポートを設計することに戸惑います。SQL 2005 = VS BIDS 2005、SQL 2008 = VS BIDS 2008、SQL 2012 = VS BIDS 2010(LOL)。
  2. 1を続けると、セキュリティ設定IMHOのポリシーはばかばかしく複雑すぎます。サービス用にホストされているページには、サーバーのセキュリティ、データベースのセキュリティとロール、2つのセキュリティ設定があります。ほとんどの人は、アクセスできない管理者を設定するだけで、他のユーザーができない理由を不思議に思っています。SSRSに関する最も一般的な苦情または質問は、一般的に私の経験からの入学に関連しています。
  3. レポートを「強化」すると思われる「式」を使用できます。多くの場合、いくつかのことを実行し、レポートはパフォーマンスのクロールに行きます。
  4. あなたはあなたが行うことができ、エクスポートすることができる一定の量を持っています。SSRSは、JavaScriptハックがなければ、私が知っているレポートにホバーしません。
  5. 愚かなSSRS構成がシステムをリサイクルするため、速度とパフォーマンスに影響が出る可能性があり、最初のレポートでは、サイトをロードするだけでしばらく時間がかかる場合があります。これを変更することで回避できますが、キープアライブサービスを作成するとうまくいくことがわかりました。

II。RDLCレポートは、どこでもホストされていないCLIENT CONTAINEDレポートです。名前の余分なcは「クライアント」を意味します。通常、これはVisual Studioクライアントアプリケーションでのみ使用することを目的としたRDL言語の拡張機能です。「レポート」アイテムを追加すると、Visual Studioに存在します。

RDLCレポートの利点:

  1. wcfサービスをはるかに簡単にデータセットに接続できます。
  2. データセットをより詳細に制御でき、EntityフレームワークオブジェクトまたはADO.NETで埋められたPOCOクラスとテーブル自体を直接使用できます。レポートにバインドする前に、データを使用して最適化することができます。
  3. コードビハインドでアドオンを直接使用して、外観をさらにカスタマイズできます。

欠点:

  1. あなたは自分でパラメータを処理する必要があり、ラッパーメソッドを実装するためにラッパーメソッドを実装することはできますが、予想以上の不幸です。
  2. リモートモードでRLDレポートにアクセスしない限り、ユーザーは 'ReportViewer'コントロールのパラメーターを表示できません。したがって、コントロールに渡すには、テキストボックス、ドロップダウン、ラジオボタンを自分で作成する必要があります。この追加コントロールが好きな人もいますが、私は個人的にはしません。
  3. 自分で作成する必要がある配布用のレポートのサービスで実行したいこと。メール、サブスクリプション、保存。申し訳ありませんが、それを.NETで構築するか、すでに上からそれを実行するプロキシを実装する必要があります。ホストされたレポートを使用するだけです。

正直なところ、私は異なる目的で両方が好きです。アナリストがいつも使用し、グラフ、チャート、ドリルダウン、Excelへのエクスポートを微調整することを望む場合は、RDLを使用して、SSRSのサイトにすべての電子メール配布の処理のレッグワークを任せます。レポートセクションがあるアプリケーションが必要で、そのアプリケーションがルールとガバナンスを備えた独自のモジュールであることを知っている場合、RDLCを使用し、パラメーターを小さくして、レポートの一部に到達する前にユーザーが行った決定に基づいて決定するクライアントがサイトにいて、通常は時間枠またはタイプのみを選択し、それ以上は選択しません。したがって、一般的には複雑なレポートではRDLを使用し、単純なものではRDLC IMHOを使用します。

お役に立てば幸いです。


57

Q:RDL形式とRDLC形式の違いは何ですか?

A:RDLファイルは、SQL Server 2005バージョンのReport Designerによって作成されます。RDLCファイルは、Visual Studio 2008バージョンのReport Designerによって作成されます。

RDL形式とRDLC形式のXMLスキーマは同じです。ただし、RDLCファイルでは、一部の値(クエリテキストなど)を空にすることができます。これは、レポートサーバーにすぐに発行する準備ができていないことを意味します。SQL Server 2005バージョンのレポートデザイナーを使用してRDLCファイルを開くことにより、欠損値を入力できます。(最初に.rdlcの名前を.rdlに変更する必要があります。)

RDLファイルは、ReportViewerコントロールランタイムと完全に互換性があります。ただし、RDLファイルには、データバインディングコードを自動生成するためにReportViewerコントロールのデザイン時が依存する情報が含まれていません。データを手動でバインドすることにより、RDLファイルをReportViewerコントロールで使用できます。新着!RDL Viewerサンプルプログラムも参照してください。

ReportViewerコントロールには、データベースに接続したりクエリを実行したりするためのロジックが含まれていないことに注意してください。このようなロジックを分離することにより、ReportViewerは、非データベースデータソースを含むすべてのデータソースと互換性があります。ただし、これは、RDLファイルがReportViewerコントロールによって使用される場合、RDLファイル内のSQL関連情報がコントロールによって単に無視されることを意味します。データベースに接続し、クエリを実行し、ADO.NET DataTablesの形式でReportViewerコントロールにデータを提供するのは、ホストアプリケーションの責任です。

http://www.gotreportviewer.com/


RDLCではなくカスタムオブジェクト(List<T>/ MyEntity)をリモートレポート(RDL)のソースとして使用できますか?
Kiquenet 2015年

21

RDLとRDLCの違いは、RDLはSQL Server Reporting Servicesに使用され、RDLCはVisual Studioでクライアント側のレポートに使用されるということです。実装とエディターはほとんど同じです。RDLは、の略Report Defintion LanguageRDLC Report Definition Language Client-side

お役に立てば幸いです。


3
RDLCを使用すると、一部のデータベースへの接続を強制することなく、手動でデータをレポートに提供できること(必要な場合でも)が可能になることに気づくまで、「クライアント側」の部分を理解できませんでした。
Daan

16

私の経験から、大規模なレポートで高いパフォーマンスが必要な場合(これはクライアントの仕様によって多少異なります)、rdlcを使用してください。さらに、rdlcレポートでは、データを非常に広範囲に制御できます。クライアント側のレポートを使用することで、無駄なデータベースへのアクセスなどを節約できる場合があります。私が現在取り組んでいるプロジェクトでは、重要なレポートをサーバー側でレンダリングするのに約2分かかり、その時間にヒットしたどのレポートサーバーもほとんど削除します。クライアント側のレンダリングに切り替えると、データセットのみがダウンロードされているため、レポートサーバーに負荷がなく、使用される帯域幅が少なく、20〜40秒に近いパフォーマンスが得られます。

あなたのマイレージは異なる場合があり、特にレポートがサーバー側レポートとして設計されている場合、rdlcは開発とメンテナンスが複雑になることに気付きます。


ここで、パフォーマンスに関しては、Reporting Servicesが実行されているリモートサーバーにRDLレポートを配置するのが最善だと思います。各顧客のワークステーションを更新する必要はありません(1つのサイトの1つのレポートのみを更新する必要があります)。2005バージョンでメモリリークが発生し、レポートサービスを使用するときに回避できるように見えるいくつかのマイナーなバグがあります。
ジュニアメイヘ

1
私はあなたが何を言おうとしているのか肯定的ではありません。クライアント側のレポートを使用して、すでに最高のパフォーマンスを見つけました。リモートサーバー上のRDLは、私たちにとって大きなボトルネックでした。
marr75

2
これは、a)レポートサーバーの相対的な処理能力、およびb)レポートビューアーコントロールがローカルまたはリモート処理のどちらに設定されているかに大きく依存します。ローカル処理モードでレポートビューアーコントロールを使用することで、レポート処理作業をクライアントに転送します。これは、レポートサーバーにワークロードを処理する能力がない場合(クライアントが多い場合など)に役立つ場合があります。ただし、適度に優れたスペックのレポートサーバーは、ほとんどのレポートワークロードを処理できる必要があります。その他のボトルネックは、レポート/クエリのデザインとデータソースです。
ネイサングリフィス

1
私がこれに回答した時点では、サーバー側のレポートは同時ユーザーをうまく処理できず、基本的に一度に1つの要求しか処理しませんでした(これが拡張されていれば、私は非常に驚きます)。さらに、私たちの環境(および私が推測しなければならない他の多くの環境)では、レポートのレンダリングは、データベースサーバーで行われる作業と比較すると、非常に小さな詳細です。クライアント側のレポートにより、アプリケーションの同時実行性をより詳細に制御できるようになりました。ただし、システムがさらに複雑になります。したがって、これはエンジニアリングの決定です。
marr75

@ marr75-サーバーとクライアントのスケールは異なります。サーバー側では、25人の従業員を雇うとレンガ壁にぶつかる可能性が高くなり、それらすべてが一度にサーバーを攻撃します。クライアント側では、25人全員が自分のPCを手に入れて負担を軽減できるので、レンガの壁にぶつかることはありません。会社が成長するにつれて、サーバー側のソリューションではさらにベビーシッターが必要になります。とはいえ、サーバーをさらに最適化することができ、それは1か所でのみ行う必要があります-私は適切なインデックスを構築することを考えています-DBAを巻き込みます。私の好みはクライアント側を使用することですが、最大のパフォーマンスのために両方を最適化します!
MicroservicesOnDDD

11

これらのポイントのいくつかは上記で対処されていますが、ここではVS2008環境の2セントです。

RDL(リモートレポート):はるかに優れた開発エクスペリエンス、スケジューリング、アドホックレポートなどの高度な機能を使用する必要がある場合の柔軟性

RDLC(ローカルレポート):レポートに送信する前にデータをより適切に制御します(レポートに送信する前にデータを検証または操作するのが簡単です)。展開がはるかに簡単になり、Reporting Servicesのインスタンスは必要ありません。

ローカルレポートに関する大きな警告の1つは、クライアントが多数の大きなレポートを実行する場合にパフォーマンスに重大な影響を与える可能性がある既知のメモリリークです。これは、レポートビューアの新しいVS2010バージョンで対処されることになっています。

私の場合、使用可能なReporting Servicesのインスタンスがあるため、新しいレポートをRDLとして開発し、それらをローカルレポートに変換(簡単)して、ローカルレポートとして展開します。


7

使用可能なレポートサービスインフラストラクチャがある場合は、それを使用してください。RDLの開発はもう少し快適です。レポートをプレビューしたり、パラメータを簡単に設定したりできます。


7

私は現在、それはより柔軟で管理しやすいようなのでRDLに傾く、RDLCは、あなたのライセンスを簡素化するように見えるという利点があります。RDLCはReporting Servicesインスタンスを必要としないため、それを使用するためにReporting Servicesライセンスは必要ありません。

これが新しいバージョンのSQL Serverにも当てはまるかどうかはわかりませんが、SQL ServerデータベースとReporting Servicesインスタンスを2つの異なるマシンに配置することを選択した場合、2つの別個のSQL Serverライセンスが必要でした。
http://social.msdn.microsoft.com/forums/en-US/sqlgetstarted/thread/82dd5acd-9427-4f64-aea6-511f09aac406/

Reporting Servicesライセンスに関する他の同様のブログや投稿については、Bingを使用できます。


3
SQL Serverのライセンスでは、SQL Serverのコンポーネントがインストールされているすべてのマシンにライセンスが必要です。したがって、レポートサーバーデータベースがレポートサーバーサービスとは異なるサーバー上にあるスケールアウト配置では、サーバーごとに個別のライセンスが必要です。
ネイサングリフィス

2

VS2008の場合、RDLはRDLCよりも優れた編集機能を提供すると思います。たとえば、RDLではテキストボックス内の選択したテキストの太字を変更できますが、RDLCでは変更できません。

RDL:abcd efgh ijklmnop

RDLC:abcd efgh ijklmnop -or- abcd efgh ijklmnop(あなたの唯一のオプションです)

これは、RDLが2008を使用しているのに対し、RDLCは2005年から以前の名前空間/フォーマットを使用しているためです。ただし、これはVS2010で変更されます


4
これは、rdlとrdlcの違いによるものではなく、SQLサーバーレポートサービス2005と2008の違いによるものです。SQLサーバーの開発に遅れをとるレポートビューアーの再配布可能ファイルは、クライアント側のレポートをサポートします。この遅れが違いの理由ですあなたが説明しています。
marr75

1
バグが多いため、2005(RDLC)から2008 Reporting Services(RDL)に移行します
JuniorMayhéJun

1

asp.net Webページによって複雑でなく消費されるレポートの数が少ない場合。rdlcを使用することをお勧めします。理由は、RSインスタンスに関するレポートの維持を回避できるためです。しかし、DBから手動でデータをフェッチし、それをrdlcにバインドする必要があります。

短所:ビジュアルスタジオでのrdlcの設計は、SSrsデザイナーに比べて少し難しいです。

プロ:メンテナンスは簡単です。私たちのページからレポートをエクスポートしている間に、サーバー側のレポートと比較してそのパフォーマンスの向上を観察しました。


-3

asp.netでレポートを使用する場合は.rdlを使用し、レポートビルダー/レポートサーバーで/ viewを使用する場合は、手動でフォーマットを変換するだけで.rdlcを使用します


これにより、RDLとRDLCがどこで実行されるかという点で交換されているように見えます。そうでない場合でも、何十もの既存の回答に役立つものは何もありません。
underscore_d

rdlcはローカルレポート用の拡張機能であり、aspnet、winforms、またはwpfで使用できます。msdn.microsoft.com/es-es/library/ms252104.aspx。リモート処理モードでは.rdlcファイルを使用できません
dgzornoza
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.