2013-04-26 1 views
7

Sql Server Reporting Services(SSRS)2008 R2でレポートを実行する際に問題が発生しました。SSRSレポートコンテンツブランク

いくつかのユーザーを作成していくつかのレポートをアップロードした後、実行するレポートを選択し、パラメータを入力してレポートのレンダリングを待つが、何も起こらない。私は「Loading」アニメーションが短い時間(レポートに関係なく1〜10秒の間に変化します)表示されますが、すぐに消え、ページの上部にあるパラメータを除き何も残しません。レポートコンテンツはまったくレンダリングされません。

これは、サイズ、パラメータ数などに関係なく、SSRSインスタンスに展開するすべてのレポートで発生します。ほとんどのレポートには、同様のタイプの約8つのパラメータがあり、そのレイアウトはすべて表形式ですいくつかの「セクション」であり、それぞれにグループ化および/または繰り返しの行を持つ可能性のあるテーブルが含まれています。平均して、各テーブルには約6つのフィールドが含まれています。レポートのデータセットをサポートするクエリは重大ではありません。ほとんどの場合、半分でSQLに対して実行できます。

以下の質問で解決策を検討して実装しましたが、いずれも問題を修正しませんでした。

(サファリ/クロームに関連する) SSRS 2008 R2 - SSRS 2012 - ReportViewer: Reports are blank in Safari and Chrome(管理者として、ブラウザの実行に関連する)

SSRS 2008 - Reporting Services Webpage is Blank except for headers

私が検討しているその他のオプションは、コンピュータからレポートを実行する代わりに直接リモート経由含まデスクトップ上に配置し、それらをホストするサーバー以外のネットワーク上の他のコンピューターからレポートを実行することができます。どちらのオプションも一貫した成功をもたらしません。

しかし、私が決定したのは、この問題はレポートに渡されるパラメータの数に直接関係していることです。たとえば、私のレポートのほとんどには、6つまたは7つのマルチセレクトパラメータがあります。それらのそれぞれは、データベースから実行時に移入されます。ユーザーが「すべて選択」を実行するか、パラメータ選択で多数のオプションを選択すると、上記の問題が発生します。ただし、ユーザーがパラメータに固有のものであり、わずかなものしか選択しない場合は、レポートが正しくレンダリングされます。

この状況をさらに複雑にするのは、「works-on-my-machine」シンドロームに苦しんでいるという事実です。いくつかの環境では発生しますが、他の環境では発生しません。

前述のとおり、選択したパラメータ値の数を制限してレポートを実行できます。これはあらゆる環境で機能します。しかし、なぜこれが起こるのか(おそらく内部SSRSの限界ですか?)、そして将来的にそれを一貫して避けるために私ができることについて、私は興味があります。

+0

あなたがそのようないくつかの詳細を追加することになり、最初は、これは私の呼び出しがあったかで、ウェブAPIからHttpResponseMessageを返すように角度を使用し

実行にはどれくらいの時間がかかり、データのフィールド数はどのくらいですか? – StevenWhite

+0

Fiddlerのようなものを使ってトラフィックを確認してみてください。何が起こっているのか見てみましょう。 iis/serverログを確認することも役に立ちます。 – Jeroen

+0

@StevenW - あなたのコメントのおかげで、レポートのサイズとランタイムに関するより具体的な詳細を更新しました! – jtlovetteiii

答えて

0

パラメータの内部制約はありません。

最初の提案: 表は


「無価値」を返さない場合、私は、SQLクエリでのパラメータの修正クエリ構文と同じ問題を解決し表示するラベルで、簡単にデバッグを実行します。 :

... 
WHERE t.FieldName = ISNULL (@parameter, t.FieldName) 
AND t.FieldName2 = ISNULL (@parameter2, t.FieldName2) 
... 
0

可能な値の長いリスト(> 100)でドロップダウン・マルチ選択のパラメータで同じ問題が発生しました。状況を確認し、どのパラメータがレポートを分割するかを調査します。

1

私は同じ問題を抱えていました。Alex Zakharovの提案私はデフォルトですべてが選択された700行のパラメータを見つけました。いくつかの行の選択を解除するとすぐに問題が解決されましたが、これは本番リリースでは不満足でした。

ERROR: HTTP status code --> 500 
-------Details-------- 
System.Web.HttpException: The URL-encoded form data is not valid. ---> 
System.InvalidOperationException: Operation is not valid due to the current state of the object. 
at System.Web.HttpValueCollection.ThrowIfMaxHttpCollectionKeysExceeded() 

ソリューション

これは、web.configsを見つけて更新するthis answerに私を導いた:私は次のエラーメッセージが見つかっLRB\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\LogFiles\)によって提案されたログファイルを探してい

以下のコード行を追加し、サービスを再起動してください。

<appSettings> 
    <!-- default is 1000 --> 
    <add key="aspnet:MaxHttpCollectionKeys" value="2000" /> 
</appSettings> 

SSRSレポートマネージャおよびレポートサーバー用に別のウェブサイトがあるので、私は、2ヶ所で更新する必要がありました: \Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer\web.config

\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportManager\web.config

0

SUGGESTION

を私は共有のように感じますこの質問に私の解決策もあります。たくさんの苦労と多くの試行を経て、私の問題はフロントエンドで多くなりました。欠落していたコードが空白ページを返していましたが、レポートがうまく機能していました。

$http.get(url + 'Report/getUsersReport?CustomerId=' + searchCriteria.customerId + '&fromDate=' + searchCriteria.fromDate + '&toDate=' + searchCriteria.toDate).then(getContractsForBackOfficeReportComplete, function (err, status) {defered.reject(err);}); 

と後のコード{ responseType: 'arraybuffer' })の次の行を追加します:

$http.get(url + 'Report/getUsersReport?CustomerId=' + searchCriteria.customerId + '&fromDate=' + earchCriteria.fromDate + '&toDate=' + searchCriteria.toDate, { responseType: 'arraybuffer' })(getUsersReportBackOffice, function (err, status) { 
defered.reject(err);}); 
+0

あなたの質問は何ですか? 「この質問」はどういう意味ですか? – Gustave