ストリング単位を持つストリング関数は、Db2 のリモート・データ・ソースから使用することはできますが、ストリング関数は Db2 のリモート・データ・ソース上ではプッシュ・ダウンされません。
症状
照会でストリング単位を持つストリング関数を使用すると、ストリング関数は Db2 のリモート・データ・ソース上ではプッシュ・ダウンされません。
例
select SUBSTRING (col13_char, 1, 2,OCTETS) from n1
問題の解決
この問題を解決するには、SAME_CODESET オプションと STRING_UNITS オプションを設定する必要があります。 SAME_CODESET オプションは、SAME_CODESET サーバー属性を外部で設定する方法を提供します。 STRING_UNITS オプションは、STRING_UNITS サーバー属性を外部で設定する方法を提供します。 これは、string_units for Db2 リモート・データ・ソースの設定です。
dvsys.rdb_connections
表から cid を取得します。select cid, url from dvsys.rdb_connections;
- Data Virtualizationローカルデータベースとリモートデータソース「Db2間の「codeset」が同じかどうかを確認する。
Data Virtualizationのローカルデータベースと 'Db2リモートデータソースの両方で以下のコマンドを実行し、'codeset設定を取得する。
db2 get db cfg for <dbname> | grep "Database code set"
ここで、<dbname> はデータベース名と
"Database code set" = UTF-8
です。設定が同じ場合は、SAME_CODESET を Y に設定できます。
- Db2 リモート・データ・ソースで以下のコマンドを実行して、ストリング単位の設定を見つけます。
db2 get db cfg for <dbname> | grep "STRING_UNITS"
ここで、 < dbname> はデータベース名で、デフォルトのストリング単位 (
"STRING_UNITS"
) はSYSTEM
に設定されます。設定が
SYSTEM
の場合は、STRING_UNITS をS
に設定します。 設定がCODEUNITS32
の場合は、STRING_UNITS をC
に設定します。 - 以下のコマンドを実行して、 SAME_CODESET および STRING_UNITS オプションを指定します。 ステップ 1 で取得した < cid> 値と、ステップ 2 で決定した SAME_CODESET の値、およびステップ 3で決定した STRING_UNITS の値を使用します。
alter server qplex options(set <cid>@same_codeset 'Y')
alter server qplex options(set <cid>@string_units 'S')
それとも
alter server qplex options(set <cid>@same_codeset 'N')
alter server qplex options(set <cid>@string_units 'C')
詳細については、Db2 の資料の「文字ストリング」を参照してください。