È possibile utilizzare le funzioni stringa con le unità stringa da un'origine dati remota Db2 ; tuttavia, la funzione stringa non viene spostata verso il basso sull'origine dati remota Db2 .
Sintomi
Le funzioni stringa vengono utilizzate con le unità stringa in una query e la funzione stringa non viene inserita nell'origine dati remota Db2 .
Per esempio
select SUBSTRING (col13_char, 1, 2,OCTETS) from n1
Risoluzione del problema
Per risolvere questo problema, è necessario impostare le opzioni SAME_CODESET e STRING_UNITS . L'opzione SAME_CODESET fornisce un modo per impostare esternamente l'attributo del server SAME_CODESET . L'opzione STRING_UNITS fornisce un modo per impostare esternamente l'attributo del server STRING_UNITS . È l'impostazione di string_units per l'origine dati remota Db2 .
- Richiamare cid dalla tabella
dvsys.rdb_connections
.select cid, url from dvsys.rdb_connections;
- Controllare se il 'codeset tra il database locale Data Virtualization e l'origine dati remota 'Db2 è lo stesso.
Eseguite il seguente comando sia nel database locale di Data Virtualization che nell'origine dati remota 'Db2 per ottenere l'impostazione 'codeset.
db2 get db cfg for <dbname> | grep "Database code set"
Dove < dbname> è il nome del database e
"Database code set" = UTF-8
.Se l'impostazione è la stessa, è possibile impostare SAME_CODESET su Y.
- Eseguire il seguente comando nell'origine dati remota Db2 per trovare l'impostazione delle unità stringa.
db2 get db cfg for <dbname> | grep "STRING_UNITS"
Dove < dbname> è il nome del database e l'unità stringa predefinita (
"STRING_UNITS"
) è impostata suSYSTEM
.Se l'impostazione è
SYSTEM
, impostare STRING_UNITS suS
. Se l'impostazione èCODEUNITS32
, impostare STRING_UNITS suC
. - Eseguire i seguenti comandi per specificare l'opzione SAME_CODESET e STRING_UNITS . Utilizzare il valore < cid> ottenuto dal passo 1 e il valore per SAME_CODESET determinato nel passo 2 e il valore per STRING_UNITS determinato nel passo 3.
alter server qplex options(set <cid>@same_codeset 'Y')
alter server qplex options(set <cid>@string_units 'S')
Oppure
alter server qplex options(set <cid>@same_codeset 'N')
alter server qplex options(set <cid>@string_units 'C')
Per ulteriori informazioni, vedi Stringhe di caratteri nella documentazione di Db2 .