Translation not up to date
W przypadku uruchamiania zapytań porównując typy danych łańcuchowych względem zdalnych baz danych Db2® , które korzystają z typu połączenia Db2 , który nie znajduje się w trybie zgodności VARCHAR2 , te zapytania mogą zwracać niepoprawne wyniki.
Objawy
Niektóre zapytania porównują typy danych łańcuchowych (CHAR lub VARCHAR) względem zdalnych baz danych Db2 , które nie są w trybie zgodności VARCHAR2 , i używają typu połączenia Db2 . Wyniki są różne od wyników otrzymywanych w lokalnej bazie danych, ponieważ zapytania zostaną wypychane i będą zgodne ze zdalnym regułami porównania 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;
Konfigurację zdalnej bazy danych Db2 można sprawdzić, uruchamiając komendę db2 get db
cfg
. W poniższym przykładzie baza danych nie znajduje się w trybie zgodności VARCHAR2 .
$ db2 get db cfg for testdb |grep "Varchar2 compatibility"
Varchar2 compatibility = OFF
Rozwiązanie problemu
- Uruchom następującą instrukcję, aby zidentyfikować wewnętrzny identyfikator połączenia (
CID
) dla źródła danych.select * from DVSYS.LISTRDBC;
To zapytanie wyświetla wszystkie połączenia w klastrze. Znajdź wiersz w danych wyjściowych dla połączenia lub połączeń, które mają zostać zmienione.
- Uruchom następującą komendę, aby zmodyfikować parametr COLLATING_SEQUENCE dla tego połączenia z
'I'
dla każdego połączenia, które ma zostać zmienione.ALTER SERVER QPLEX OPTIONS (add <CID>@collating_sequence 'I');
Na przykład:ALTER SERVER QPLEX OPTIONS (add DB210000@collating_sequence 'I');