Não é possível fazer push down de funções de cadeia de caracteres com unidades de cadeia de caracteres na fonte de dados remota " Db2 na Data Virtualization
É possível usar as funções de sequência com unidades de sequência a partir de uma origem de dados remota do Db2; no entanto, a função de sequência não é submetida a push down na origem de dados remota do Db2.
Sintomas
É possível usar as funções de sequência com unidades de sequência em uma consulta, porém a função de sequência não é submetida a push down na origem de dados remota do Db2.
Por exemplo:
select SUBSTRING (col13_char, 1, 2,OCTETS) from n1
Resolvendo o problema
Para resolver esse problema, deve-se configurar as opções SAME_CODESET e STRING_UNITS. A opção SAME_CODESET fornece uma maneira de configurar o atributo do servidor SAME_CODESET externamente. A opção STRING_UNITS fornece uma maneira de configurar o atributo do servidor STRING_UNITS externamente. É a configuração de string_units para a origem de dados remota Db2.
- Obtenha o cid da tabela
dvsys.rdb_connections.select cid, url from dvsys.rdb_connections; - Verifique se o " codeset entre o banco de dados local Data Virtualization e a fonte de dados remota " Db2 é o mesmo.
Execute o seguinte comando no banco de dados local do Data Virtualization e na fonte de dados remota " Db2 para obter a configuração " codeset.
db2 get db cfg for <dbname> | grep "Database code set"Em que <dbname> é o nome do banco de dados e
"Database code set" = UTF-8.Se a configuração for a mesma, será possível configurar SAME_CODESET para Y.
- Execute o comando a seguir na origem de dados remota Db2 para localizar a configuração de unidades de cadeia.
db2 get db cfg for <dbname> | grep "STRING_UNITS"Em que < dbname> é o nome do banco de dados e a unidade de sequência padrão (
"STRING_UNITS") é configurada comoSYSTEM.Se a configuração for
SYSTEM, configure STRING_UNITS paraS. Se a configuração forCODEUNITS32, configure STRING_UNITS paraC. - Execute os comandos a seguir para especificar a opção SAME_CODESET e STRING_UNITS Use o valor < cid> que você obteve da etapa 1 e o valor para SAME_CODESET que você determinou na etapa 2 e o valor para STRING_UNITS que você determinou na etapa 3.
alter server qplex options(set <cid>@same_codeset 'Y')alter server qplex options(set <cid>@string_units 'S')Ou
alter server qplex options(set <cid>@same_codeset 'N')alter server qplex options(set <cid>@string_units 'C')
Para obter mais informações, consulte Sequências de caracteres na documentação do Db2.