Erreurs courantes du fournisseur de données pour DB2
Les fournisseurs de données pour DB2 utilisent la procédure stockée IBM SQLCAMESSAGE pour retourner des messages d’erreur détaillés. Pour utiliser cette fonctionnalité, vous devez configurer la source de données afin qu’elle utilise une valeur EBCDIC pour le CCSID d’hôte.
Le tableau suivant décrit les erreurs de serveur DB2 qui peuvent survenir et les actions que vous devez effectuer pour les corriger.
SQLSTATE | SQLCODE | Message | Description |
---|---|---|---|
42601 | -104 | symbole non conforme. Jeton non valide. Jeton inattendu. Un jeton> de jeton <inattendu a été trouvé après le <texte>. Les jetons attendus peuvent inclure : <liste de> jetons. |
Motif : le serveur ne peut pas exécuter une instruction SQL contenant des symboles ou jetons non conformes, non valides ou inattendus. Action : vérifiez la syntaxe SQL à l’aide de la documentation de référence d’IBM DB2 SQL correspondant à la plateforme et la version d’IBM DB2. Vérifiez si l’application consommateur de données utilise des identificateurs d’objets délimités non pris en charge (par exemple, des crochets ([<nom> de l’objet]) au lieu d’utiliser des délimiteurs pris en charge (guillemets doubles). |
42602 | -113 | CARACTÈRE NON VALIDE TROUVÉ DANS : <string>, REASON CODE <reason-code>. Un caractère non valide a été détecté dans un nom. <l’identificateur> contient un caractère qui n’est pas autorisé ou qui ne contient aucun caractère. |
Motif : le serveur ne peut pas traiter une instruction SQL SET CURRENT SQLID, quand le client se connecte au serveur DB2. Action : vérifiez les informations de connexion pour vous assurer que la valeur Qualificateur par défaut correspond à la collection DB2 dans laquelle l’objet est catalogué. Pour plus d’informations, consultez Qualificateur par défaut. |
42802 | -117 | Le nombre de valeurs affecté diffère du nombre spécifié ou implicite de colonnes. L'instruction contient un nombre de valeurs incorrect. Le nombre de valeurs affecté diffère du nombre spécifié ou implicite de colonnes ou variables. |
Motif : le serveur ne peut pas exécuter une instruction SQL INSERT quand le nombre de valeurs spécifié diffère du nombre de colonnes dans la ou les tables. Action : vérifiez que le nombre de colonnes correspond aux objets dans l’instruction SQL, en interrogeant le catalogue système (par exemple, SYSIBM.SYSCOLUMNS) ou en exécutant une requête de schéma client (par exemple, OLE DB IDBSchemaRowsets::GetSchemas(DBSCHEMA_COLUMNS) ou ADO.NET MsDb2Connection.GetSchema(Columns). |
22007 | -181 | La représentation sous forme de chaîne d'une valeur DateTime n'est pas une valide. Une valeur dans une chaîne de date, d'heure ou timestamp n'est pas valide. La représentation sous forme de chaîne d'une valeur DateTime est hors limites. |
Motif : le serveur ne peut pas exécuter l’instruction SQL si une valeur DATETIME n’est pas correctement formée ou est hors limites. Action : vérifiez que les valeurs DATETIME se trouvent dans la plage prise en charge, de 0001 à 9999 pour l’année, de 1 à 12 pour le mois, 28/29/30/31 pour le jour (en fonction du mois et de l’année, bissextile ou non), de 0 à 24 (12 pour les États-Unis) pour l’heure, de 0 à 59 pour les minutes, de 0 à 59 pour les secondes et de 0 à 999999 pour les microsecondes. Vérifiez les informations de connexion pour vous assurer que l'option DateTime comme Date spécifie la valeur True afin d'indiquer au client de supprimer la partie heure des valeurs de données Windows DateTime mappées aux valeurs de données DB2 Timestamp, et permettre à la base de données DB2 de lire ces valeurs en tant que valeurs de données DB2 Date. Pour plus d’informations, consultez DateTime comme Date. |
42704 | -204 | <schéma>.<object> est un nom non identifié. Un nom d'objet ou de contrainte non identifié a été détecté. <name> est un nom non défini. |
Raison : le serveur ne peut pas exécuter une instruction SQL qui fait référence à un schéma> non valide<.<nom de l’objet>. Action : vérifiez le nom d’objet spécifié dans l’instruction SQL. Vérifiez les informations de connexion pour vous assurer que la valeur Qualificateur par défaut correspond à la collection DB2 dans laquelle l’objet est catalogué. Pour plus d’informations, consultez Qualificateur par défaut. |
42703 | -206 | <nom> N’EST PAS VALIDE DANS LE CONTEXTE OÙ IL EST UTILISÉ Nom> de colonne <non dans les tables spécifiées. <name> n’est pas valide dans le contexte dans lequel il est utilisé. |
Motif : le serveur ne peut pas exécuter une instruction SQL dans laquelle un nom de colonne spécifié ne correspond pas à une colonne de la table ou vue source ou cible référencée dans l’instruction. Action : vérifiez que les références de colonne correspondent aux objets dans l’instruction SQL, en interrogeant le catalogue système (par exemple, SYSIBM.SYSCOLUMNS) ou en exécutant une requête de schéma client (par exemple, OLE DB IDBSchemaRowsets::GetSchemas(DBSCHEMA_COLUMNS) ou ADO.NET MsDb2Connection.GetSchema(Columns). |
08S01 | -360 | La ressource hôte est introuvable. Vérifiez que la valeur Initial Catalog correspond au nom de la ressource hôte. | Motif : le serveur n’a pas pu connecter le client au nom de base de données relationnelle DRDA demandé. Action : vérifiez les informations de connexion pour vous assurer que la valeur du catalogue initial correspond à DB2 pour le nom de l’emplacement z/OS, à DB2 pour l’entrée du répertoire de base de données relationnelle IBM i (RDBDIRE) ou à DB2 pour le nom de la base de données Windows. Pour plus d’informations, consultez Catalogue initial. |
42884 | -440 | AUCUNE <routine-type> BY THE NAME <routine-name> HAVING COMPATIBLE ARGUMENTS A ÉTÉ TROUVÉ DANS LE CHEMIN ACTUEL Aucune routine avec le nom et les arguments compatibles spécifiés n'a été trouvée. Aucune routine autorisée nommée <routine-name> de type <routine-type> ayant des arguments compatibles n’a été trouvée. |
Raison : le serveur ne peut pas exécuter une instruction SQL CALL qui contient le nombre incorrect d’arguments ou les types de données de paramètres non valides, ou qui fait référence à un schéma> non valide<.<nom de l’objet>. Action : vérifiez le nombre d’arguments. Vérifiez les types de données de paramètre. Vérifiez le nom d'objet spécifié dans l'instruction SQL. Vérifiez les informations de connexion pour vous assurer que la valeur Qualificateur par défaut correspond à la collection DB2 dans laquelle l'objet est catalogué. Pour plus d’informations, consultez Qualificateur par défaut. |
24501 | -501 | Le curseur identifié dans une instruction FETCH ou CLOSE n'est pas ouvert. Nom du <curseur> non ouvert. Le curseur spécifié dans une instruction FETCH ou CLOSE n'est pas ouvert ou une variable de curseur dans une référence de fonction scalaire de curseur n'est pas ouverte. |
Motif : le serveur ne peut pas exécuter une instruction SQL SELECT ou CALL requérant une instruction FETCH ou CLOSE sur un curseur qui n’est pas dans un état ouvert. Action : vérifiez l’application pour voir si elle émet une instruction COMMIT ou ROLLBACK qui peut fermer le curseur. Recherchez les messages de retour reçus précédemment pouvant indiquer que le serveur a fermé automatiquement le curseur sur la base d’un événement système (par exemple, SQLCODE -404, -652, -679, -802, -901, -904, -909, -910, -911, -913 ou -952). Vérifiez les informations de connexion pour vous assurer que la valeur True est spécifiée pour l'option Validation automatique si des consommateurs génériques sont employés, notamment SQL Server Integration Services et Distributed Query Processor, lorsque des transactions d'unité de travail distante sont utilisées. Pour plus d’informations, consultez AutoCommit. |
42501 | -551 | Non autorisé pour l'objet. Non autorisé à object-name <> dans <le type <resource-name> resource-type>. <authorization-ID> ne dispose pas de l’autorisation ou du privilège requis pour effectuer l’opération> d’opération <sur <object-name>. |
Motif : le serveur ne peut pas exécuter d’instruction SQL SELECT ou CALL requérant une instruction CURSOR stockée dans un package SQL statique auquel l’utilisateur actuel n’est pas autorisé à accéder. Le client utilise les instructions SQL prédéfinies dans les sections de packages SQL statiques DB2 pour prendre en charge l'exécution des instructions SQL SELECT. Par défaut, le client définit un package automatiquement si l'utilisateur de l'exécution dispose de l'autorité BIND, EXECUTE et GRANT pour le package sur la collection DB2 spécifiée dans la propriété de connexion Collection de packages. Action : vérifiez les informations de connexion pour vous assurer que la valeur Collection de packages correspond à la collection DB2 dans laquelle les packages HIS 2010 sont définis pour exécution par l’identificateur d’utilisateur actuel ou le groupe PUBLIC. Créez manuellement les packages HIS 2010 pour exécution par l'ID d'utilisateur actuel ou le groupe PUBLIC, à l'aide de l'outil d'accès aux données, de l'Assistant Source de données, de liaisons de données ou de la bibliothèque d'accès aux données. Connectez-vous à DB2 à l'aide d'un ID d'autorisation pouvant créer automatiquement des packages HIS 2010 (privilèges CREATE, BIND et EXECUTE). Pour plus d’informations, consultez Collection de packages. |
42501 42602 |
-567 -567 |
<bind-type> AUTHORIZATION ERROR USING <auth-id> AUTHORITY PACKAGE = <package-name> PRIVILEGE = <privilege>. Le nom d'autorisation &1 n'est pas autorisé. <authorization-ID n’est> pas un ID d’autorisation valide. |
Motif : le serveur ne peut pas exécuter une instruction SQL SELECT quand le compte d’utilisateur n’est pas autorisé à créer ou exécuter les packages DB2 requis. Action : vérifiez les informations de connexion pour vous assurer que la valeur Collection de packages correspond à la collection DB2 dans laquelle les packages HIS 2010 sont définis pour exécution par l’identificateur d’utilisateur actuel ou le groupe PUBLIC. Créez manuellement les packages HIS 2010 pour exécution par l'ID d'utilisateur actuel ou le groupe PUBLIC, à l'aide de l'outil d'accès aux données, de l'Assistant Source de données, de liaisons de données ou de la bibliothèque d'accès aux données. Connectez-vous à DB2 à l'aide d'un ID d'autorisation pouvant créer automatiquement des packages HIS 2010 (privilèges CREATE, BIND et EXECUTE). Pour plus d’informations, consultez Collection de packages. |
42710 | -601 | LE NOM (NUMÉRO DE SÉRIE DE VERSION OU DE VOLUME) DE L’OBJET À DÉFINIR OU LA CIBLE D’UNE INSTRUCTION RENAME EST IDENTIQUE AU NOM EXISTANT (NUMÉRO DE SÉRIE DE LA VERSION OU DU VOLUME) <DU type>> d’objet TYPE <D’OBJET. <le nom> dans le <type> de <schéma> existe déjà. Le nom de l’objet à créer est identique au nom de nom <existant du type> de type<.> |
Motif : le serveur ne peut pas nommer un objet quand le nom est déjà utilisé pour un autre objet du même type. Action : nommez l’objet de façon unique par rapport aux objets de base de données existants. |
42721 | -725 | LE REGISTRE <> SPÉCIAL À L’EMPLACEMENT><A ÉTÉ FOURNI UNE VALEUR NON VALIDE | Motif : le serveur ne peut pas traiter l’instruction SET CURRENT SQLID quand elle contient une valeur non valide pour l’ID d’utilisateur ou le nom de la collection. Action : vérifiez les informations de connexion pour vous assurer que la valeur Qualificateur par défaut correspond à la collection DB2 dans laquelle l’objet est catalogué. Pour plus d’informations, consultez Qualificateur par défaut. |
23505 | -803 | UNE VALEUR INSÉRÉE OU MISE À JOUR N’EST PAS VALIDE, CAR L’INDEX DANS INDEX SPACE <indexspace-name> CONTRAINT LES COLONNES DE LA TABLE AFIN QU’AUCUNE LIGNE NE PUISSE CONTENIR DE VALEURS DUPLIQUÉES DANS CES COLONNES. RID OF EXISTING ROW IS X <row identifier> Valeur de clé dupliquée spécifiée. Une ou plusieurs valeurs de l’instruction INSERT, de l’instruction UPDATE ou de la mise à jour de clé étrangère provoquée par une instruction DELETE ne sont pas valides, car la clé primaire, la contrainte unique ou l’index unique identifié par <index-id> empêchent table-name <> d’avoir des valeurs en double pour la clé d’index. |
Motif : le serveur ne peut pas exécuter une instruction INSERT ou UPDATE sur une table limitée par un index unique où l’instruction entraînerait la création de valeurs dupliquées. Action : vérifiez que les valeurs de données ne violent pas une contrainte, en interrogeant le catalogue système (par exemple, SYSIBM.SYSINDEXES) ou en exécutant une requête de schéma client (par exemple, OLE DB IDBSchemaRowsets::GetSchemas(DBSCHEMA_INDEXES) ou ADO.NET MsDb2Connection.GetSchema(Indexes). |
51002 | -805 | NOM-EMPLACEMENT> DBRM OU PACKAGE NAME<.<collection-id>.<dbrmname>.<jeton> de cohérence INTROUVABLE DANS PLAN-name<>. >MOTIF<. Nom du> package <SQL dans <collection-name> introuvable sur DRDA Server. Le <nom> du package est introuvable. |
Motif : le serveur n’a pas pu trouver le package SQL statique DB2 requis par le client DB2 pour exécuter une instruction SQL SELECT dynamique. Action : vérifiez les informations de connexion pour vous assurer que la valeur Collection de packages correspond à la collection DB2 dans laquelle les packages HIS 2010 sont définis pour exécution par l’ID d’utilisateur actuel ou le groupe PUBLIC. Pour plus d’informations, consultez Collection de packages. |
58004 | -901 | Échec de l'exécution provoqué par une erreur système n'empêchant pas l'exécution correcte des instructions SQL suivantes. Erreur système SQL. L'instruction SQL a échoué en raison d'une erreur système non grave. Les instructions SQL suivantes peuvent être traitées. (Motif<>.) |
Motif : le serveur n’est pas parvenu à exécuter l’instruction SQL actuelle mais les instructions SQL suivantes peuvent être traitées correctement. Cette erreur peut être provoquée par l'échec d'une validation de transaction dans une unité de travail distribuée ou l'échec d'une mise à jour en lien avec une contrainte, ou l'instruction SQL contient une longueur non valide (0 ou supérieure à la longueur maximale). Action : l’utilisateur doit consulter le code motif le cas échéant pour déterminer si une action de l’utilisateur ou de l’administrateur est requise, et comment éviter l’erreur en modifiant l’application, la transaction ou la commande. |
57011 | -904 | ÉCHEC DE L’EXÉCUTION PROVOQUÉ PAR UNE RESSOURCE INDISPONIBLE. REASON <reason-code>, TYPE OF RESOURCE <resource-type>, AND RESOURCE NAME <resource-name>. Limite de ressources dépassée. Échec de l'exécution provoqué par une ressource indisponible. Code de raison : <code> de raison, type de ressource : <type> de ressource et nom de la ressource : <nom-ressource>. |
Motif : le serveur ne peut pas exécuter l’instruction SQL car l’objet de l’instruction est indisponible. Action : vérifiez que l’objet et la base de données sont disponibles et non bloqués, hors ligne ou dans un autre état non disponible. |
57033 | -913 | ÉCHEC DE L’EXÉCUTION PROVOQUÉ PAR UN BLOCAGE OU UN DÉLAI D’EXPIRATION. REASON CODE <reason-code>, TYPE OF RESOURCE <resource-type> et RESOURCE NAME <resource-name>. Nom-objet de> ligne ou d’objet <dans <le type <resource-name> resource-type> en cours d’utilisation. Échec de l'exécution provoqué par un blocage ou un délai d'expiration. Reason code <reason-code>. |
Motif : le serveur ne peut pas exécuter l’instruction SQL car l’objet de l’instruction est indisponible. Action : vérifiez que l’objet et la base de données sont disponibles et non bloqués, hors ligne ou dans un autre état non disponible. Validez ou restaurez l'opération précédente, puis déconnectez-vous de la base de données. Pour plus d'informations sur l'état de l'objet, consultez le code motif du serveur (par exemple, le code motif 00C90088 de DB2 pour z/OS indique un blocage, tandis que le code 00C9008E indique un délai d'expiration). |