0 / 0
Go back to the English version of the documentation
在Data Virtualization中,无法在 "Db2远程数据源上向下推送带有字符串单元的字符串函数
Last updated: 2024年11月26日
在Data Virtualization中,无法在Db2远程数据源上用字符串单元向下推送字符串函数

您可以将字符串函数与 Db2 远程数据源中的字符串单元配合使用; 但是,不会在 Db2 远程数据源上下推字符串函数。

症状

将字符串函数与查询中的字符串单元配合使用,并且不会在 Db2 远程数据源上下推字符串函数。

例如

select SUBSTRING (col13_char, 1, 2,OCTETS) from n1

解决问题

要解决此问题,必须设置 SAME_CODESETSTRING_UNITS 选项。 SAME_CODESET 选项提供了一种在外部设置 SAME_CODESET 服务器属性的方法。 STRING_UNITS 选项提供了一种在外部设置 STRING_UNITS 服务器属性的方法。 它是 Db2 远程数据源的 string_units 的设置。

  1. dvsys.rdb_connections 表获取 cid
    select cid, url from dvsys.rdb_connections;
  2. 检查 "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。

  3. Db2 远程数据源中运行以下命令以查找字符串单元设置。
    db2 get db cfg for <dbname> | grep "STRING_UNITS"

    其中, <dbname> 是数据库名称,缺省字符串单元 ("STRING_UNITS") 设置为 SYSTEM

    如果设置为 SYSTEM,请将 STRING_UNITS 设置为 S。 如果设置为 CODEUNITS32,请将 STRING_UNITS 设置为 C

  4. 运行以下命令以指定 SAME_CODESETSTRING_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 文档中的 字符串

Generative AI search and answer
These answers are generated by a large language model in watsonx.ai based on content from the product documentation. Learn more