Data Virtualization化のリモートデータソース「Db2クエリ結果が正しくない
最終更新: 2025年3月17日
VARCHAR2 互換モードではない Db2 接続タイプを使用する Db2 リモート・データベースに対して、ストリング・データ・タイプを比較する照会を実行すると、これらの照会が誤った結果を戻す可能性があります。
症状
VARCHAR2 互換モードではない Db2 リモート・データベースに対して、Db2 接続タイプを使用して、ストリング・データ・タイプ (CHAR または VARCHAR) を比較する照会をいくつか実行します。 照会はリモート Db2 比較規則に従ってプッシュダウンされるため、ローカル・データベースで得られる結果とは異なる結果が得られます。
例:
select col_char from testable1 union select col_varchar from testable2;
select col_char from testable1 except select col_varchar from testable2;
select col_char from testable1 intersect select col_varchar from testable2;
コマンドを実行して、リモート Db2 データベースの構成を確認できます。 以下の例では、データベースは VARCHAR2 互換モードではありません。db2 get db
cfg
$ db2 get db cfg for testdb |grep "Varchar2 compatibility" Varchar2 compatibility = OFF
問題の解決
この問題を回避するには、照合シーケンス・サーバー・オプションを変更します。
- 以下のステートメントを実行して、データ・ソースの内部接続 ID (
) を識別します。CID
select * from DVSYS.LISTRDBC;
この照会は、クラスター内のすべての接続をリストします。 変更する単一または複数の接続に対する出力の行を検索します。
- 以下のコマンドを実行して、変更する接続ごとに、
へのこの接続の COLLATING_SEQUENCE パラメーターを変更します。'I'
ALTER SERVER QPLEX OPTIONS (add <CID>@collating_sequence 'I');
例:ALTER SERVER QPLEX OPTIONS (add DB210000@collating_sequence 'I');
トピックは役に立ちましたか?
0/1000