SQL Server 2008 R2 Reporting Services 不具合情報 – “値 'x' は無効です。有効な値は、'xx' から 'xxx' です。”

横井 羽衣子
SQL Developer Support Engineer

今回は、マイクロソフト サポート記事で公開されていない不具合情報をご報告いたします。

対象製品

Windows Server 2008 R2 Reporting Services
(※ Windows Server 2008 では発生しません)

現象

SQL Server 2008 R2 Reporting Service (SSRS) にて、Tablix を含む "可能な場合は、1 ページに収める (Keep together on one page if possible)" オプションを付けたレポートで、印刷のプレビューを行った際、以下のエラーが発生することがあります。

値 'x' は無効です。有効な値は、'xx' から 'xxx' です。

Reporting Services のログを確認すると、以下のような例外が発生していることが確認できます。

Microsoft.ReportingServices.ReportProcessing.RenderingObjectModelException: The value 'x' is invalid. Valid values are between 'xx' and 'xxx'.;
※ x および xx、xxx は発生時それぞれの値が入ります。 例) 値 '3' は無効です。有効な値は、'0' から '2' です。

問題の詳細と対処方法

この事象は、SQL Server 2008 R2 Reporting Services の改ページ (Page Break) 関連の処理に問題があることに起因して発生している問題です。
Reporting Services は、SQL Server 2008 R2 Reporting Services から実装が大幅に変更されているため、SQL Server 2008 Reporting Services ではこの現象は発生いたしません
現象の発生要因は複合的であり、後述のような様々な要因が関連します。印刷サイズと、レポートの構成、実データが入った状態でのサイズなどを調整するための計算結果に依存する現象です。また、Tablix を使っていない場合は、本現象は発生しません。

・データの量
・Tablix の設定、レイアウト
・縦横比
・設定された用紙のサイズ

これらの内容を 1 ページ内に収めようと計算した結果、計算結果に誤差を生じる場合があります。
この誤差が、さらに Page Braak 処理上処理できない値になった場合に発生するため、問題発生率が非常に低い現象です。
なお、本現象は計算結果に誤差が発生した場合に発生しますが、上述のようにレポート運用下の条件が可変であるため、残念ながら事前に完全に抑止する方法はございません。

対処方法は、Tablix のプロパティの “可能な場合は、1 ページに収める (Keep together on one page if possible)” のチェックボックスを外していただくこととなります。
このプロパティは、レポート出力時、データが少しだけ余る状況などにおいて、1 ページ以内に収まるよう調整させるかどうかを決定するものです。
チェックボックスを オフにしていただいた場合の影響は、改ページの際に若干データが次のページに送られることになることとなります。

clip_image002

参考情報

現在お客様がご利用の SQL Server のバージョンを確認する方法は下記技術情報に詳細が記載されております。

SQL Server のバージョンとエディションを識別する方法
https://support.microsoft.com/kb/321185

本不具合のため、運用上お困りになられているお客様もいらっしゃることかと存じます。弊社製品の不具合によりご迷惑をおかけしておりますことを心よりお詫び申し上げます。
お手数ですが、上記回避策の対処をご検討くださいますようお願い申し上げます。