0 / 0
Retourner à la version anglaise de la documentation
Erreur SQL1822N lors de l'exécution d'une requête dans Data Virtualization
Dernière mise à jour : 26 nov. 2024
Erreur SQL1822N lors de l'exécution d'une requête dans Data Virtualization

Lorsque vous tentez d'exécuter une requête, vous obtenez une erreur avec le code SQL1822N.

Symptômes

Lorsque vous exécutez une requête, vous recevez un message d'erreur avec le code SQL1822N et le contenu suivant.

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

Causes

Ce message s'affiche lorsque la requête contient une erreur dans au moins une des sources de données impliquées dans l'exécution de la requête.

Résolution du problème

Pour tenter de résoudre le problème, procédez comme suit.
  1. Extrayez le message d'erreur complet en interrogeant la vue de catalogue LISTREMOTEWARNINGS.
    • Option 1 Pour extraire tous les avertissements au cours de la dernière heure, utilisez la requête suivante.
      SELECT NODE_NAME, 
             TSTAMP, 
             CAST(WARNING AS VARCHAR(250)) 
          FROM DVSYS.LISTREMOTEWARNINGS 
          WHERE TIMESTAMPDIFF(8, CURRENT TIMESTAMP - TSTAMP) <= 1 ORDER BY TSTAMP
    • Option 2 Pour extraire tous les avertissements, utilisez la requête suivante.
      SELECT * FROM DVSYS.LISTREMOTEWARNINGS;
  2. Identifiez la cause première du problème. Le message d'erreur distant complet est dans la colonne "WARNING". Utilisez cette colonne pour identifier et corriger la cause principale. Si vous avez utilisé l'option 1 pour réviser tous les avertissements obtenus au cours de la dernière heure, l'avertissement peut être tronqué en raison de la spécification CAST. Augmentez la taille de varchar() ou supprimez la spécification cast pour afficher le message complet.

    Exemple 1: Le message indique que vous ne pouvez pas vous connecter à la source de données distante.
    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

    Vous pouvez effectuer les actions suivantes.

    • Vérifiez si les définitions de l'utilisateur et du mot de passe sont à jour sur la connexion de Data Virtualization.
    • Vérifiez que la source de données distante est en cours d'exécution.
    • Vérifiez que la connectivité réseau entre l'instance de Data Virtualization et la source de données distante existe.
    Exemple 2: Le message indique que certaines requêtes avec row_number () over () ou rownumber () over () échouent.
    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

    Vous pouvez effectuer l'action suivante.

    • Ajoutez une clause order by pour cette fonction, comme illustré dans cet exemple.
      select row_number() over(order by $columnname) from <table_name>
    Exemple 3: Le message indique que certaines requêtes échouent dans une source de données 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.
    Pour résoudre les problèmes liés aux performances des requêtes, voir Optimisation des performances et optimisation des requêtes.

    Ce problème peut également être dû à la configuration du paramètre PASSTHROUGH sur le serveur Data Virtualization Manager . Pour demander des modifications à ce paramètre, ouvrez un cas pour demander une prise en charge.

    Exemple 4: Le message indique que la requête concerne une table comportant des colonnes de type PERIOD sur une source de données Teradata .

    Modifiez la requête en utilisant les instructions de l'optimiseur pour Teradata.

    Par exemple, une table avec la spécification suivante bluadmin.testtera (C1 int, C2 interval year, C3 interval day to hour, C4 interval minute, C5 PERIOD(DATE), C6 PERIOD(TIME)) est interrogée.
    select c5 from bluadmin.testtera
    Cette requête peut être modifiée comme illustré dans l'exemple suivant.
    select c5 from bluadmin.testtera 
    /* <OPTGUIDELINES> <SERVER NAME='QPLEX'> <OPTION NAME='collating_sequence_dv' VALUE='TERAD10001:N'/> </SERVER> </OPTGUIDELINES> */

    TERAD10001 est le CID de la table testtera.

    Exemple 5 : Le message indique qu'une source de données distante a été supprimée de la Data Virtualization, mais que les tables existantes sont conservées lorsque vous tentez de créer une vue ou d'accéder aux tables distantes.
    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
Recherche et réponse à l'IA générative
Ces réponses sont générées par un modèle de langue de grande taille dans watsonx.ai en fonction du contenu de la documentation du produit. En savoir plus