SQLサーバーレポートサービスレポートがいくつかあります。その時は書きませんでしたが、世話をする必要があります。
これらのレポートは、ブラウザーで開いたときに起動され、デフォルトのパラメーター(検索用語と制限は空白)を使用して大量のデータを取得するため、処理が遅くなります。クライアントは、ユーザーがパラメーターを入力して「レポートの表示」を押すまでレポートが生成されないことを好みます
残念ながら、SSRSはよくわかりません。レポートを開いたときに、レポートの実行を停止するにはどうすればよいですか?
レポートをクリックし、上部の「プロパティ」をクリックします。遅いレポートが実行されている可能性があるため、少し待たなければならない場合があります。次に、左側の「パラメータ」をクリックします。
各パラメーターについて、「ユーザーにプロンプトを出す」がチェックされていることを確認し、少なくとも1つのパラメーターについて「デフォルトを持っている」がチェックされていないことを確認します。左上にある[表示]をもう一度クリックして(またはフォルダに戻ってレポート名をクリックして)、レポートを表示します。レポートはすぐには起動しません。
レポートビルダーでは、[フィルター]メニューからこれを行うことができます。少なくとも1つのフィルターから値の選択を解除し、レポートを保存します。
レポートにパラメーターがない場合に、レポートの読み込みを停止することもできますか?
レポートが自動実行されないようにするには、少なくとも1つのレポートパラメータをデフォルトに設定しないといけないことがわかりました。
この構成を使用する必要がありました(デフォルトなしで残した3つのパラメーターはすべてNullを受け入れるため、ユーザーはNullチェックボックスをクリックするだけです)。
[スクリーンショットがありません]
ユーザーにこれを見てもらい、レポートが自動実行されないようにします。
[スクリーンショットがありません]
パラメータ選択の1つのデフォルト値を、存在しない(有効なパラメータ値ではない)-1の値に設定しました。これはエラーを生成しませんでした。パラメータのドロップダウンボックスをに設定し、レポートが実行されないようにします。 NULLはすべてを選択するため、デフォルト値のNULLを使用できませんでした。レポートを実行する前に、ユーザーが意図的にALL(NULL)を選択できるようにしたいと考えました。 ALLを選択した場合、レポートのレンダリングには数分かかります。
私はそれが実行されるときにパラメーターを要求するように私のクエリslighltyを変更することによってそれをしました。
その後、レポートサイトにレポートを公開した後、パラメーターがユーザーにプロンプトを表示するように指定しました。これには、ユーザーがレポートを開いて表示しただけでは、レポートがSQLサーバーをひっくり返さないという効果があります。
オプションのフィールドがあるレポートを操作しているときに、このための素晴らしいトリックを見つけましたが、オプションのフィールドが空白の場合、大量のデータを引き出します。
ステップ1:自動発砲を防ぐ
ステップ2:「null」を使用せずにパラメーターをオプションにする
WHERE (@param="" OR column = @param)
に変更しますこの方法では、エンドユーザーが気にする必要のある追加のフィールドがあり、レポートは要求されるまで起動せず、テキストボックスが空のままの場合、where句の条件は評価されません。
注:レポートで利用可能な値が指定されている場合、「」の代わりにテーブル構造に無効な値を使用できます。この方法で他のデータ型(文字列以外)でも使用できます
私はこの投稿が少し古いことを知っていますが、ここには別の解決策があるので、誰かが必要な場合に備えて投稿します。
ReportViewerを使用している場合は、プロパティShowBody = "False"を設定できます。次に、OnSubmittingParameterValuesイベントで、ShowBodyプロパティをtrueに変更します。そうすれば、レポートにデフォルト値のない追加のパラメーターやパラメーターは必要ありません。
<rsweb:ReportViewer
ID="rv"
runat="server"
Width="100%"
Height="100%"
SizeToReportContent="false"
ZoomMode="PageWidth"
KeepSessionAlive="true"
ProcessingMode="Remote"
PromptAreaCollapsed="false"
InteractivityPostBackMode="AlwaysAsynchronous"
AsyncRendering="true"
ExportContentDisposition="AlwaysInline"
ShowReportBody="False"
ShowPrintButton="false"
OnSubmittingParameterValues="rv_SubmittingParameterValues"/>
そして、rv_SubmittingParameterValuesメソッドで:
this.rv.ShowReportBody = true;
結果を返さないデフォルト値をキーパラメータに指定するだけでこれを実現しました。
最善の方法は、nullを許可しないがレポートでは使用されないパラメーターを追加することでした。これにより、開始時にレンダリングが停止しますが、レポートには影響しません。
唯一の欠点は、レポートビューアーでレポートを表示している場合、上部に少し奇妙に見えるボックスがあることです。 C#/ CSSを使用して非表示にすることもできます。
レポートビューアを使用して表示していないため、バックエンドでのレンダリングのみに使用しても影響はありません。
レポートビューアを使用している場合でも、開発時に役立ちます。