Oracle ベースのレポート モデルの作成と使用

SharePoint 統合モードで実行している場合、モデル デザイナー、レポート マネージャー、または Microsoft Office SharePoint Server 2007 か SharePoint Server 2010 を使用して、バージョン 9.2.0.3 以降が動作する Oracle データベースに基づくレポート モデルを生成できます。

Oracle データベースに基づくモデルを生成するには、バージョン 9.2.0.3 以降の Oracle クライアントが動作している必要があります。Oracle クライアント ディレクトリがシステム パスにあり、レポート サーバー Windows サービスおよびレポート サーバー Web サービスの両方にこのディレクトリ内のファイルへのアクセス権限があることが必要です。

さらに、次の点を確認してください。

  • インストール済みの Reporting Services で Reporting Services Oracle データ処理拡張機能を利用できること。

  • レポート サーバー Windows サービスおよびレポート サーバー Web サービスからアクセスできるフォルダーに Oracle クライアントがインストールされていること。

  • レポート サーバー Windows サービス、レポート サーバー Web サービス、および自動実行アカウントに、インストール済み Oracle クライアントに対するディレクトリ読み取りアクセス権限およびディレクトリ実行アクセス権限があること。

接続文字列

Oracle データベースに基づくレポート モデルを作成する場合、接続文字列は次のようになります。

Data Source="Oracle9";Unicode="True"

"Oracle9" は Oracle サーバーの論理名を表します。

注意

Oracle データベースに接続文字列を指定する場合、ServerName は構成ファイル tnsnames.ora で定義されている名前と一致している必要があります。

Oracle データ ソースへの接続方法の詳細については、「Oracle 接続 (SSRS)」を参照してください。

重要な注意事項重要

Oracle モデルのデータ ソース ビューを生成する場合、データ ソース ビュー ウィザードの [データ ソースを選択してください] ページにある [詳細設定] ボタンをクリックし、[データ ソース ビューの詳細オプション] ダイアログ ボックスで、データベース オブジェクトのフィルターに使用するスキーマ名を選択するようにしてください。その後で、モデルに追加するデータベース オブジェクトを選択します。

機能上の制限

Oracle データベースの基礎的な動作が原因で、Oracle データベースで使用した場合にはセマンティック モデル定義言語 (SMDL) クエリ トランスレーターの動作が一部異なります。これには、機能上の小さな差異や、バグの回避や対象データベースにおける設計上の制限事項を管理するために必要な構成スイッチが含まれます。次に、その相違点について説明します。

データ型

SMDL では、次の Oracle データ型のみがサポートされます。

SMDL データ型

Oracle データ型

String

CHAR、NCHAR、VARCHAR2、NVARCHAR2、LONG、CLOB、NCLOB

Decimal または Integer

NUMBER

Boolean

NUMBER

データ ソース ビュー (DSV) ファイルで Oracle 列が Boolean に指定されている場合、基になる列は NUMBER とし、そこに格納される値は 0、1、または NULL であることが必要です。

日付

DATE、TIMESTAMP

Binary

RAW、LONGRAW、BLOB

SMDL では、次に示すデータ型を含め、上記以外のデータ型がサポートされません。

  • BINARY_FLOAT

  • BINARY_DOUBLE

  • TIMESTAMP WITH TIME ZONE

  • TIMESTAMP WITH LOCAL TIME ZONE

  • INTERVAL YEAR TO MONTH

  • INTERVAL DAY TO SECOND

  • ROWID

  • UROWID

  • BFILE

レポート マネージャーまたは SharePoint 製品を使用してレポート モデルを自動生成する際、サポートされないデータ型が含まれる列はモデルから除外されます。さらに、サポートされないデータ型が主キーに含まれる場合には、エンティティ全体が生成されません。

モデル デザイナーを使用してレポート モデルを作成する際には、すべてのデータ型がレポート モデルに追加されます。そのため、モデルを調整するときに上記の未サポート データ型をすべてフィルターで除外する必要があります。

関数

一部の関数の動作は、基になるデータベースに応じて変わることがあります。Left 関数、Right 関数、または Substring 関数の length 引数にゼロ未満の値を指定した場合、SMQL における動作は不確定になります。

構成スイッチ

基になるデータ ソースにより、データ ソースや環境の特徴に基づいてクエリ トランスレーターの動作を変更できる構成スイッチを多数使用できます。次に示すスイッチは、RSReportServer.config ファイルで定義されています。このファイルは、既定で <SysDrive>:\Program Files\Microsoft SQL Server\MSSQL.X\Reporting Services\ReportServer\ フォルダーにインストールされます。

名前

既定の定義

説明

Disable

NO_MERGE

InLeftOuters

Boolean

False

Oracle クエリに対して生成される NO_MERGE オプティマイザー ヒントをオフにするスイッチです。

Oracle クエリ オプティマイザーの技術的な問題により、左外部結合を必要とする特定のクラスのクエリは失敗するか、間違った結果を返します。そのため、Reporting Services Oracle クエリ トランスレーターでは一部の左外部結合で NO_MERGE オプティマイザー ヒントが使用されます。これによって正しいクエリ結果を得られますが、パフォーマンスが低下する可能性があります。この問題を解決するソフトウェア更新プログラムを Oracle から取得した場合には、このスイッチを True に設定して、NO_MERGE を使用する方法を無効にしてください。

EnableUnistr

Boolean

False

Oracle クエリで Unicode リテラルを表すために、UNISTR 関数の明示的な使用を強制するスイッチです。

一般的に、データベースのロケールとクエリに含まれる文字列定数のロケールが一致している場合、クエリ内で Unicode 文字列定数を通常の文字列として生成することができます。Oracle データベースの NLS_CharacterSet で定義されたコード ページに存在しないリテラル定数を使用する場合、UNISTR 関数を明示的に使用して Unicode リテラルを表す必要があります。このスイッチを True に設定すると、クエリ内のすべての Unicode 文字列定数が Oracle UNISTR 関数を使用してエンコードされます。 

DisableTSTruncation

Truncation

Boolean

False

TIMESTAMP を DATE に変換する際の、秒の小数部の明示的な切り捨てをオフにするスイッチです。

Oracle 既定の丸め動作では、タイムスタンプが日付としてキャストされますが、一部の日付操作ではタイムスタンプではなく日付が必要とされため、このような操作の精度を保証するには、日付に変換する前にタイムスタンプ データ型の秒の小数部を明示的に切り捨てるしかありません。Oracle クエリ トランスレーターでは基となる Oracle データ型情報にアクセスしてタイムスタンプと日付を区別する必要がないため、この切り捨て処理は日付にも適用されます。ほとんどの日付処理では、この動作によるパフォーマンスへの影響はわずかです。どの対象データベースでもタイムスタンプが使用されない場合、このスイッチを True に設定して、不要な切り捨てを省略することができます。

EnableMath

OpCasting

Boolean

False

算術演算の結果を Microsoft .NET Framework 10 進形式にキャストする動作をオンにするスイッチです。

クエリの算術演算の結果として生成される 10 進値の有効桁数と小数点以下桁数が、.NET Framework 10 進データ型で表せない組み合わせになる場合があります。そのような 10 進数型の式の結果を明示的に 10 進値としてキャストすることはできますが、このような操作が必要になるということをデザイン時に認識することは困難です。このような式が頻繁に作成される場合、このスイッチを True に設定することで、必要なキャストを自動的に実行することができます。

変更履歴

変更内容

TIMESTAMP を DATE に変換する際の、秒の小数部の明示的な切り捨てをオフにする構成スイッチの名前を更新しました。正しいスイッチ名は、DisableTSTruncation です。