0 / 0
Go back to the English version of the documentation
Data Virtualization中 "Db2远程数据源的查询结果不正确
Last updated: 2024年11月26日
Data Virtualization中Db2远程数据源的查询结果不正确

如果运行将字符串数据类型与 Db2® 远程数据库进行比较的查询 (这些数据库使用不在 VARCHAR2 兼容性方式下的 Db2 连接类型) ,那么这些查询可能会返回不正确的结果。

症状

运行一些查询以将字符串数据类型 (CHAR 或 VARCHAR) 与未处于 VARCHAR2 兼容性方式的 Db2 远程数据库进行比较,并使用 Db2 连接类型。 您会获得与本地数据库中的结果不同的结果,因为查询会下推并遵循远程 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 get db cfg 命令来检查远程 Db2 数据库的配置。 在以下示例中,数据库未处于 VARCHAR2 兼容性方式。

$ db2 get db cfg for testdb |grep "Varchar2 compatibility"
Varchar2 compatibility                                  = OFF

解决问题

要解决此问题,请修改整理顺序服务器选项。
  1. 运行以下语句以标识数据源的内部连接标识 (CID)。
    select * from DVSYS.LISTRDBC;

    此查询将列出集群中的所有连接。 在输出中查找要更改的一个或多个连接的行。

  2. 运行以下命令以针对要更改的每个连接将此连接的 COLLATING_SEQUENCE 参数修改为 'I'
    ALTER SERVER QPLEX OPTIONS (add <CID>@collating_sequence 'I');
    例如
    ALTER SERVER QPLEX OPTIONS (add DB210000@collating_sequence 'I');
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