Go back to the English version of the documentation在Data Virtualization中,无法在 "Db2远程数据源上向下推送带有字符串单元的字符串函数
在Data Virtualization中,无法在Db2远程数据源上用字符串单元向下推送字符串函数
Last updated: 2024年11月26日
您可以将字符串函数与 Db2 远程数据源中的字符串单元配合使用; 但是,不会在 Db2 远程数据源上下推字符串函数。
症状
将字符串函数与查询中的字符串单元配合使用,并且不会在 Db2 远程数据源上下推字符串函数。
例如
select SUBSTRING (col13_char, 1, 2,OCTETS) from n1
解决问题
要解决此问题,必须设置 SAME_CODESET 和 STRING_UNITS 选项。 SAME_CODESET 选项提供了一种在外部设置 SAME_CODESET 服务器属性的方法。 STRING_UNITS 选项提供了一种在外部设置 STRING_UNITS 服务器属性的方法。 它是 Db2 远程数据源的 string_units 的设置。
- 从
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 文档中的 字符串 。