Archives de catégorie : SQLCODE

CODE RETOUR -667

THE CLUSTERING INDEX FOR A PARTITIONED TABLE SPACE CANNOT BE EXPLICITLY DROPPED

Explication :
L’instruction DROP INDEX a tenté de supprimer l’index de cluster d’une table résidant dans un espace table partitionné. L’index de cluster d’une telle table ne peut pas être supprimé explicitement avec l’instruction DROP INDEX.

Action du système :
La déclaration ne peut pas être traitée. L’index spécifié n’a pas été supprimé.

Réponse du programmeur :
L’index de cluster d’une table dans un espace table partitionné ne peut être supprimé implicitement que lorsque l’espace table partitionné associé est supprimé.

SQLSTATE :
42917

CODE RETOUR -668

THE COLUMN CANNOT BE ADDED TO THE TABLE BECAUSE THE TABLE HAS AN EDIT PROCEDURE DEFINED WITH ROW ATTRIBUTE SENSITIVITY

Explication :
L’instruction ALTER TABLE a tenté d’ajouter une colonne à une table dont la procédure d’édition est définie avec une sensibilité d’attribut de ligne. Aucune colonne ne peut être ajoutée à ce tableau.

Action du système :
La déclaration ne peut pas être traitée. La table spécifiée n’a pas été modifiée.

Réponse du programmeur :
Vérifiez que la table correcte a été spécifiée dans l’instruction ALTER. N’essayez pas de modifier la définition d’une table à laquelle est associée une procédure d’édition écrite pour l’installation.

SQLSTATE :
56018

CODE RETOUR -669

THE OBJECT CANNOT BE EXPLICITLY DROPPED. REASON reason-code

Explication :
L’instruction DROP a échoué.

reason-code
La raison du message ou du code SQL, indiquée par l’une des valeurs suivantes :

0001L’une des instructions suivantes a tenté de supprimer une table qui réside dans un espace table partitionné explicitement défini (non UTS) :
– L’instruction DROP TABLE
– Une instruction DROP qui provoque la suppression d’une table dépendante

SQLCODE -669 avec le code anomalie 0001 peut être émis lorsque l’une des instructions répertoriées ci-dessus tente de supprimer une table qui réside dans un espace table partitionné explicitement défini ou un espace table partitionné par croissance.
0002L’instruction DROP INDEX a tenté de supprimer un index dont Db2 a besoin pour conserver les conditions suivantes :
– La contrainte de clé primaire sur une table
– Une contrainte de clé unique sur une table
– Une contrainte référentielle sur une table
– L’unicité d’une colonne ROWID
– Une colonne XML définie sur une table

Un index requis par le système ne peut pas être supprimé à l’aide de l’instruction DROP INDEX.
0003L’instruction DROP INDEX a tenté de supprimer un index créé implicitement pour une table définie avec une organisation HASH.
0004L’instruction DROP TABLE a tenté de supprimer une table implicitement créée pour une colonne XML.
0005L’instruction DROP TABLESPACE a tenté de supprimer un espace table implicitement créé pour une table contenant une colonne XML.
0006L’instruction DROP a tenté de supprimer une table auxiliaire, un index auxiliaire ou un espace table auxiliaire impliqué dans le clonage.
0007L’instruction DROP TABLESPACE ou l’instruction DROP DATABASE a tenté de supprimer un espace table ou une base de données contenant une table d’accélérateur uniquement.
0008L’instruction DROP INDEX a tenté de supprimer un index utilisé pour la définition d’une clé étrangère pour une contrainte référentielle temporelle.

Action du système :
La déclaration ne peut pas être traitée. L’objet n’est pas supprimé.

Réponse du programmeur :
Prenez l’action corrective appropriée en fonction de la valeur du code de raison :

0001La table d’un espace table partitionné (non UTS) ne peut être supprimée implicitement que lorsque l’espace table lui-même est supprimé.
0002Si vous ne souhaitez pas conserver la clé primaire, la clé unique ou la contrainte référentielle, utilisez la clause DROP CONSTRAINT de l’instruction ALTER TABLE pour supprimer la clé primaire ou la contrainte unique. Si l’index a été créé uniquement pour appliquer la clé primaire ou unique, l’index sera supprimé. Si ce n’est pas le cas, l’instruction DROP INDEX pourrait alors être traitée. Un index pour une colonne ROWID ne peut être supprimé qu’en supprimant la table.
0003L’index ne peut être supprimé implicitement que lorsque la table associée qui contient la colonne XML est supprimée. Si l’erreur concerne une table organisée par hachage, l’index de débordement de hachage associé ne peut pas être supprimé. La suppression de l’organisation de hachage supprimera automatiquement l’index de débordement de hachage.
0004La table peut être supprimée implicitement uniquement lorsque la table associée contenant la colonne XML est supprimée.
0005L’espace table peut être supprimé implicitement uniquement lorsque la table associée contenant la colonne XML est supprimée.
0006Une table auxiliaire, un index auxiliaire ou un espace table auxiliaire impliqué dans le clonage ne peut être supprimé implicitement que lorsque la table associée contenant la colonne XML est supprimée.
0007L’espace table ou la base de données ne peut être supprimé explicitement que lorsque la table d’accélérateur uniquement est supprimée.
0008L’index ne peut être supprimé qu’après la suppression de la contrainte référentielle temporelle.

SQLSTATE :
42917

CODE RETOUR -670

THE RECORD LENGTH OF THE TABLE EXCEEDS THE PAGE SIZE LIMIT

Explication :
La longueur de ligne d’une table ne peut pas dépasser la taille de page de l’espace table dans lequel cette table réside (ou doit résider). La taille de page de l’espace table est déterminée par le pool de mémoire tampon utilisé par cet espace table.

Cette erreur peut résulter de l’une des conditions suivantes :

Cast specification
La longueur cible dépasse la limite maximale. La limite est de 32764 pour un résultat de chaîne de caractères de longueur variable.

Création de tableaux
Les conditions suivantes sont possibles pour une instruction CREATE TABLE :

  • Comme défini dans une instruction CREATE TABLE, la longueur de ligne de la table dépasserait la taille de page de l’espace table spécifié (ou par défaut). Pour corriger cette situation, soit :
    – Réduisez la longueur des lignes du tableau en réduisant la longueur d’une ou de plusieurs colonnes.
    – Affectez la table à un espace table qui utilise un pool de mémoire tampon plus grand.
  • La colonne LOB avec la clause INLINE LENGTH a contribué au dépassement de la limite de taille de page.

Modification du tableau
Les conditions suivantes sont possibles pour une instruction ALTER TABLE :

  • L’ajout de la colonne spécifiée entraînerait un dépassement de la longueur de ligne de la table par rapport à la taille de page de l’espace table. Ce tableau ne peut pas être modifié pour ajouter des colonnes.
  • L’instruction a été émise pour modifier la longueur d’une colonne de longueur variable existante et la nouvelle longueur de la colonne modifiée entraînerait un dépassement de la longueur de ligne de la table par rapport à la taille de page de l’espace table.
  • La colonne LOB avec une clause INLINE LENGTH a contribué au dépassement de la limite de taille de page.

    Pour corriger cette situation, réduisez la longueur de la colonne.

Modification de l’espace table
Les conditions suivantes sont possibles pour une instruction ALTER TABLESPACE :

  • Dans le cas d’une instruction ALTER TABLESPACE utilisée pour modifier le pool de mémoire tampon à une taille de page plus petite, la longueur de ligne pour l’une des tables de l’espace table dépasse la nouvelle taille de page plus petite.
  • Dans le cas d’une instruction ALTER TABLESPACE avec une clause MOVE TABLE, l’espace table cible doit être défini avec un pool de mémoire tampon dont la taille de page peut contenir la longueur d’enregistrement de la table qui est déplacée.

Résultat de la jointure
La longueur de la ligne dans le résultat d’une jointure dépasse la limite maximale. La limite est de 65 529 octets. L’enregistrement de tri inclut les colonnes en cours de tri et les colonnes sélectionnées par l’utilisateur. La longueur des colonnes que l’utilisateur sélectionne correspond à la longueur des données de tri.

Trier le résultat
Les conditions suivantes sont possibles pour un résultat de tri :
La longueur de ligne d’un enregistrement de tri volumineux dépasse la limite maximale. La limite est de 65 529 octets. L’enregistrement de tri inclut les colonnes en cours de tri et les colonnes sélectionnées par l’utilisateur. La longueur des colonnes que l’utilisateur sélectionne correspond à la longueur des données de tri.
La longueur de la clé de tri pour un tri dépasse la limite maximale. La limite est de 32 000 octets. La longueur des colonnes triées correspond à la longueur de la clé de tri.

Action du système :
La déclaration ne peut pas être traitée.

Réponse du programmeur :
Corrigez l’erreur en fonction des informations fournies et réémettez l’instruction.

SQLSTATE :
54010

CODE RETOUR -671

THE BUFFERPOOL ATTRIBUTE OF THE TABLE SPACE CANNOT BE ALTERED AS SPECIFIED BECAUSE IT WOULD CHANGE THE PAGE SIZE OF THE TABLE SPACE

Explication :
Par exemple, la modification de l’attribut de pool de mémoire tampon pour l’espace table spécifié dans l’instruction ALTER TABLESPACE modifierait la taille de page de l’espace table, soit de 4 Kb à 32 Kb, de 8 Kb à 16 Kb, ou vice versa.

L’utilisation de l’instruction ALTER TABLESPACE pour modifier la taille de page d’un espace table n’est pas autorisée.

Action du système :
La déclaration ne peut pas être traitée. La définition de l’espace table n’a pas été modifiée.

Réponse du programmeur :
Par exemple, si l’espace table utilise l’un des pools de mémoire tampon de 4 Kb (par exemple, BP0, BP1 ou BP2), il peut être réaffecté à l’un des autres pools de mémoire tampon de 4 Kb (mais pas au pool de mémoire tampon BP32K). Si, toutefois, il est affecté au pool de mémoire tampon BP32K, l’affectation du pool de mémoire tampon ne peut pas être modifiée ultérieurement.

SQLSTATE :
53040

CODE RETOUR -662

A PARTITIONED INDEX CANNOT BE CREATED ON A TABLE SPACE, OR A TABLE SPACE CANNOT BE INDEX-CONTROLLED. TABLE SPACE tspace-name, REASON reason-code

Explication :
L’instruction CREATE INDEX n’a pas pu être traitée. La valeur dans le reason-code identifie le problème.

01L’instruction CREATE INDEX contient la clause PARTITION BY pour le partitionnement contrôlé par index, mais la table sur laquelle l’index est créé possède l’une des caractéristiques suivantes :
– La table ne se trouve pas dans un espace table partitionné.
– La table se trouve dans un espace table partition-by-growth ou partition-by-range.
02L’instruction CREATE INDEX contient l’option PARTITIONED, mais la table sur laquelle l’index est créé possède l’une des caractéristiques suivantes :
– La table ne se trouve pas dans un espace table partitionné.
– La table se trouve dans un espace table de partition par croissance.

Action du système :
La déclaration ne peut pas être traitée. L’index spécifié n’a pas été créé.

Réponse du programmeur :
Vérifiez que la table d’objets appropriée a été spécifiée dans l’instruction. Vérifiez l’utilisation correcte de la clause PARTITION BY ou de l’option PARTITIONED dans les instructions CREATE INDEX

SQLSTATE :
53037

CODE RETOUR -663

THE NUMBER OF KEY LIMIT VALUES IS EITHER ZERO, OR GREATER THAN THE NUMBER OF COLUMNS IN THE KEY OF INDEX index-name

Explication :
Le nombre de spécifications de valeur de clé de limite fournies dans au moins une des spécifications PART de l’instruction CREATE INDEX ou ALTER INDEX est égal à zéro ou supérieur au nombre de colonnes dans la clé d’index.

Action du système :
La déclaration ne peut pas être traitée. L’index spécifié n’a pas été créé.

Réponse du programmeur :
Corrigez l’instruction afin que chaque spécification PART contienne exactement le même nombre de spécifications de valeurs de clé de limite qu’il y a de colonnes dans la clé d’index.

SQLSTATE :
53038

CODE RETOUR -665

THE PARTITION CLAUSE OF AN ALTER STATEMENT IS OMITTED OR INVALID

Explication :

L’instruction ALTER n’est pas valide pour l’une des raisons suivantes :

  • L’espace table ou l’index n’est pas partitionné et la clause PARTITION est spécifiée.
  • L’espace table est un espace table partitionné par croissance et la clause PARTITION est spécifiée.
  • L’espace table ou l’index est partitionné, un attribut de partition (FREEPAGE ou PCTFREE) est spécifié et la clause PARTITION n’est pas spécifiée.
  • L’entier spécifié dans la clause PARTITION n’identifie pas une partition de l’espace table ou de l’index.
  • Une clause USING, PRIQTY, SECQTY ou ERASE est utilisée pour modifier les attributs de stockage, mais la partition n’est pas spécifiée.
  • Une clause GBPCACHE est utilisée pour modifier les attributs de mise en cache du pool de mémoire tampon du groupe, mais la partition n’est pas spécifiée.
  • La clause PARTITION BY est spécifiée sans clause PARTITION pour spécifier la plage de la partition. Vous devez spécifier une clause PARTITION avec une plage pour modifier la spécification PARTITION BY.
  • L’utilisation d’ALTER pour modifier les attributs des valeurs d’une partition n’est pas autorisée pour un index sur une table de base partitionnée avec des colonnes LOB, ou pour la table elle-même.

Action du système :
La déclaration ne peut pas être traitée.

Réponse du programmeur :
Déterminez si l’espace table ou l’index que vous souhaitez modifier est partitionné. S’il est partitionné, spécifiez une clause PARTITION qui identifie la partition que vous souhaitez modifier. S’il n’est pas partitionné, ne spécifiez pas la clause PARTITION.

SQLSTATE :
53039

CODE RETOUR -666

stmt-verb object CANNOT BE EXECUTED BECAUSE function IS IN PROGRESS

Explication :
L’instruction SQL n’a pas pu être exécutée car la fonction nommée était en cours d’exécution à ce moment-là.

stmt-verb
Le type d’instruction en langage de définition de données (DDL)
object
Le type d’objet Db2
function
La fonction active qui a empêché l’action. Un utilitaire, la fonction de limitation des ressources ou Db2ZAI.

Si l’objet fait partie de la base de données des communications, il ne peut pas être supprimé pendant que le DDF est actif.

Action du système :
La déclaration ne peut pas être traitée.

Réponse du programmeur :
Si la fonction est un utilitaire, attendez que la fonction se termine ou s’arrête. Soumettez ensuite à nouveau l’instruction pour exécution.

Si la fonction est la fonction de limite de ressources, l’instruction ne peut pas être exécutée tant que la fonction de limite de ressources n’est pas arrêtée ou basculée vers une table de limite de ressources différente. Dans un environnement de partage de données Db2, la fonction de limite de ressources doit être arrêtée sur tous les membres du groupe de partage de données Db2 ou tous les membres doivent basculer vers une table de limite de ressources qui n’est pas associée à l’objet.

Si la fonction est le DDF, l’installation doit être arrêtée avant que l’objet puisse être supprimé. Dans un environnement de partage de données Db2, la fonction doit être arrêtée sur tous les membres du groupe de partage de données Db2.

SQLSTATE :
57005

CODE RETOUR -661

object-type object-name CANNOT BE CREATED ON PARTITIONED TABLE SPACE tspace-name BECAUSE THE NUMBER OF PARTITION SPECIFICATIONS IS NOT EQUAL TO THE NUMBER OF PARTITIONS OF THE TABLE SPACE

Explication :

La définition du object-name est incorrecte pour l’une des raisons suivantes :

  • Si object-type est INDEX, l’instruction CREATE INDEX pour l’index de cluster sur une table partitionnée (c’est-à-dire une table résidant dans un espace table partitionné) ne contient pas le même nombre de spécifications de partition qu’il y a de partitions dans l’espace table. La définition de l’index de cluster d’une table partitionnée doit contenir exactement autant de spécifications de partition qu’il y a de partitions dans l’espace table dans lequel réside cette table. De plus, les numéros de partition doivent être valides et uniques.
  • Si object-type est TABLE, le nombre de partitions spécifié dans la clause de partitionnement de l’instruction CREATE TABLE diffère du nombre de partitions dans l’espace table dans lequel la table est créée.

Action du système :
La déclaration ne peut pas être traitée. L’index de cluster ou la table spécifié n’a pas été créé.

Réponse du programmeur :
Examinez la définition de l’espace table partitionné pour déterminer le nombre de partitions spécifiées. Corrigez la syntaxe de l’instruction CREATE INDEX ou CREATE TABLE pour fournir le nombre correct de spécifications de partition.

SQLSTATE :
53036