Erro SQL1822N quando você executa uma consulta na Data Virtualization

Ao tentar executar uma consulta, você recebe um erro com o código SQL1822N.

Sintomas

Ao executar uma consulta, você recebe uma mensagem de erro com o código SQL1822N e o conteúdo a seguir:

SQL1822N Unexpected error code "GDB_ERROR" received from data source
"DV-FMP". Associated text and tokens are "Query failed at some sources. 
Check remote warnings". SQLSTATE=560BD

Causas

Você obtém esta mensagem quando a consulta contém um erro em pelo menos uma das origens de dados envolvidas na execução de consulta

Resolvendo o problema

Para tentar resolver o problema, siga estas etapas.
  1. Recupere a mensagem de erro completa consultando a visualização do catálogo LISTREMOTEWARNINGS.
    • Opção 1 Para recuperar todos os avisos na última hora, use a consulta a seguir.
      SELECT NODE_NAME, 
             TSTAMP, 
             CAST(WARNING AS VARCHAR(250)) 
          FROM DVSYS.LISTREMOTEWARNINGS 
          WHERE TIMESTAMPDIFF(8, CURRENT TIMESTAMP - TSTAMP) <= 1 ORDER BY TSTAMP
    • Opção 2 Para recuperar todos os avisos, use a consulta a seguir.
      SELECT * FROM DVSYS.LISTREMOTEWARNINGS;
  2. Identificar a causa raiz do problema. A mensagem de erro remoto completa está na coluna "WARNING". Use esta coluna para identificar e corrigir a causa raiz. Se você usou a opção 1 para revisar todos os avisos na última hora, o aviso pode ser truncado devido à especificação CAST. Aumente o tamanho do varchar() ou remova o cast para ver a mensagem completa.

    Exemplo 1: A mensagem indica que não é possível se conectar à origem de dados remota.
    qpendpoint_1:6415   2021-04-27-08.43.59.428000000 
    RESULT_DS_EXEC_QUERY_ERROR: Query exec failure against Data Source 
    GDB_GTW_TPCDS_CATALOG_RETURNS_DB210001: java.lang.Exception: 
    Unreachable RDBMS in Data Source: 
    GDB_GTW_TPCDS_CATALOG_RETURNS_DB210001

    É possível executar as ações a seguir:

    • Verifique se as definições de usuário e senha estão atualizadas na conexão da Data Virtualization.
    • Verifique se a origem de dados remota está em execução.
    • Verifique se existe conectividade de rede entre a instância Data Virtualization e a fonte de dados remota.
    Exemplo 2: A mensagem indica que algumas consultas com row_number () over () ou rownumber () over () falham.
    fmp_1 2022-06-17-02.49.56.313000000 2022-06-17-02.49.56.313000000 1 
    RESULT_DS_EXEC_QUERY_ERROR: Origin: 3 node(s), 0/1 sources (0 successful, 0 excluded, 1 failed, 0 missing) 
    Warnings (1) >"GDB_NODE yanlixu_yanlixuiptt8x86_Endpoint1:60009 QUERYING SOURCE Netezza VIA GDB_SUBQ_NETEZ10000: 
    Unable to get physical meta data for table: (SELECT ROW_NUMBER() OVER( ) C0 FROM ""TEST"".""TESTNUMBER"" A0) 
    SUBQ : org.netezza.error.NzSQLException: ERROR: ROW_NUMBER must include ORDER BY specification
    
    "-1822: Remote Exception: Origin: 3 node(s), 0/1 sources (0 successful, 0 excluded, 1 failed, 0 missing) 
    Warnings (1) >"GDB_NODE yanlixu_yanlixuiptt8x86_Endpoint1:60009 QUERYING SOURCE Netezza VIA GDB_SUBQ_NETEZ10000: 
    Unable to get physical meta data for table: (SELECT ROW_NUMBER() OVER( ) C0 FROM ""TEST"".""TESTNUMBER"" A0) SUBQ : 
    org.netezza.error.NzSQLException: ERROR: ROW_NUMBER must include ORDER BY specification
    
    yanlixu_yanlixuiptt8x86_Endpoint1:60009 2022-06-17-02.49.56.298000000 2022-06-17-02.49.56.298000000 1 
    RESULT_DS_EXEC_QUERY_ERROR: Query exec failure against Data Source GDB_SUBQ_NETEZ10000: java.lang.Exception: 
    Unable to get physical meta data for table: (SELECT ROW_NUMBER() OVER( ) C0 FROM "TEST"."TESTNUMBER" A0) SUBQ : 
    org.netezza.error.NzSQLException: ERROR: ROW_NUMBER must include ORDER BY specification

    É possível executar a ação a seguir:.

    • Inclua uma cláusula order by para essa função conforme mostrado neste exemplo.
      select row_number() over(order by $columnname) from <table_name>
    Exemplo 3: a mensagem indica que algumas consultas falham em uma origem de dados Data Virtualization Manager .
    qpendpoint_3:6417    2022-08-31-08.31.55.624000000 2022-08-31-08.31.55.624000000                    1 
    ENGINE_STATEMENT_PREPARE_ERROR_SQL: GDB_SUBQ_DVM10000 
    Unable to PREPARE statement - (empty result for this data source): 
    Unable to get physical meta data for table: (SELECT A0.C1 C0, A0.C8 C1 FROM DVSQL.CB1A_TSDCV_TESTNUMBER A0) SUBQ : 
    java.sql.SQLException: [DV][JDBC Driver][3.1.202201120442] [DV][JDBC Driver][3.1.202201120442] 
    Unexpected end of input stream java.net.SocketInputStream@30edda80 
    (read 0 out of an expected 4 bytes), while executing userSql=select * from (SELECT A0.C1 C0, A0.C8 C1 FROM DVSQL.CB1A_TSDCV_TESTNUMBER A0) SUBQ where 0=1 - 'call listrdbc()' to identify the data source.
    Para resolver problemas com o desempenho da consulta, consulte Ajuste de Desempenho e Otimização de Consulta

    Esse problema também pode ser causado pela configuração do parâmetro PASSTHROUGH no servidor Data Virtualization Manager .. Para solicitar mudanças para esse parâmetro, abra um caso para solicitar suporte

    Exemplo 4: A mensagem indica que a consulta está em uma tabela que possui colunas com o tipo PERIOD em uma origem de dados Teradata .

    Altere a consulta usando as diretrizes do otimizador para Teradata..

    Por exemplo, uma tabela com a especificação a seguir bluadmin.testtera (C1 int, C2 interval year, C3 interval day to hour, C4 interval minute, C5 PERIOD(DATE), C6 PERIOD(TIME)) é consultada
    select c5 from bluadmin.testtera
    Essa consulta pode ser mudada conforme mostrado no exemplo a seguir:
    select c5 from bluadmin.testtera 
    /* <OPTGUIDELINES> <SERVER NAME='QPLEX'> <OPTION NAME='collating_sequence_dv' VALUE='TERAD10001:N'/> </SERVER> </OPTGUIDELINES> */

    Em que TERAD10001 é o CID para a tabela testtera

    Exemplo 5: a mensagem indica que uma fonte de dados remota foi removida da Data Virtualization, mas as tabelas existentes são mantidas quando você tenta criar uma visualização ou acessar as tabelas remotas.
    Failed to get join result.:
    Unexpected error code "GDB_ERROR" received from data source "DV-FMP". Associated text and tokens are "Query failed at some sources. Check remote warnings".. SQLCODE=-1822, SQLSTATE=560BD, DRIVER=4.32.28