Si ejecuta consultas que comparan tipos de datos de serie con bases de datos remotas de Db2®, que utilizan el tipo de conexión Db2 que no está en modalidad de compatibilidad con VARCHAR2, estas consultas pueden devolver resultados incorrectos.
Síntomas
Ejecuta algunas consultas que comparan tipos de datos de serie (CHAR o VARCHAR) con bases de datos remotas de Db2 que no están en modalidad de compatibilidad con VARCHAR2 y utilizan el tipo de conexión Db2. Obtiene resultados que son diferentes de los que obtiene en una base de datos local porque las consultas se envían y siguen las reglas de comparación de Db2 remotas.
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;
Puede comprobar la configuración de la base de datos de Db2 remota ejecutando el mandato db2 get db
cfg
. En el ejemplo siguiente, la base de datos no está en modalidad de compatibilidad con VARCHAR2.
$ db2 get db cfg for testdb |grep "Varchar2 compatibility"
Varchar2 compatibility = OFF
Resolución del problema
- Ejecute la sentencia siguiente para identificar el ID de conexión interna (
CID
) para el origen de datos.select * from DVSYS.LISTRDBC;
Esta consulta lista todas las conexiones en el clúster. Busque la fila en la salida para la conexión o las conexiones que desea cambiar.
- Ejecute el mandato siguiente para modificar el parámetro COLLATING_SEQUENCE de esta conexión con
'I'
para cada conexión que desee cambiar.ALTER SERVER QPLEX OPTIONS (add <CID>@collating_sequence 'I');
Por ejemplo:ALTER SERVER QPLEX OPTIONS (add DB210000@collating_sequence 'I');