Archives de catégorie : SQLCODE

CODE RETOUR -575

OBJECT object-name (OBJECT TYPE object-type) CANNOT BE REFERENCED EXPLICITLY OR IMPLICITLY

Explication
L’instruction fait référence à un objet, mais l’objet ne peut pas être utilisé comme demandé.

object-name
Le nom de l’objet référencé.
object-type
Le type d’objet qui a été référencé. Les valeurs possibles incluent :

VIEW
Une modification a été apportée à une table sous-jacente à la vue de l’object-name , ce qui a rendu la définition de la vue invalide. La vue doit être régénérée avec succès avec une instruction ALTER VIEW avant de pouvoir être référencée dans une instruction autre que ALTER VIEW, GRANT, REVOKE, DROP, COMMENT ou LABEL. Emettez une instruction ALTER VIEW pour régénérer la vue.

ROW PERMISSION
L’autorisation de ligne de object-name n’est pas valide car une tentative précédente de la régénérer a échoué. L’autorisation de ligne doit être désactivée avant que la table de contrôle d’accès aux lignes puisse être référencée. Pour corriger l’état non valide, l’autorisation de ligne doit être supprimée et recréée avec une définition modifiée.

COLUMN MASK
Le masque de colonne de object-name n’est pas valide car une tentative précédente de le régénérer a échoué. Le masque de colonne doit être désactivé avant que la table de contrôle d’accès aux colonnes puisse être référencée. Pour corriger l’état invalide, le masque de colonne doit être supprimé et recréé avec une définition modifiée.

Action du système
L’instruction ne peut pas être traitée.

Réponse du programmeur
Prenez les mesures correctives suggérées.

SQLSTATE
51024

CODE RETOUR -574

THE SPECIFIED DEFAULT VALUE OR IDENTITY ATTRIBUTE VALUE CONFLICTS WITH THE DEFINITION OF COLUMN column-name

Explication
Une valeur spécifiée pour une colonne n’est pas valide.

column-name
Le nom de la colonne.

Les raisons possibles de cette erreur incluent :

  • La valeur n’est pas attribuable à la colonne car la constante n’est pas conforme au format d’une constante de ce type de données, ou la valeur a une longueur ou une précision incorrecte.
  • Une constante à virgule flottante est spécifiée et la colonne n’est pas un type de données à virgule flottante.
  • Une constante décimale est spécifiée et les chiffres non nuls seraient tronqués lors de l’affectation à la colonne.
  • La valeur est supérieure à 255 octets, y compris les guillemets pour les chaînes, les caractères d’introduction tels que le X pour une constante hexadécimale, les noms de fonctions complets et les parenthèses.
  • Le registre spécial USER, SESSION_USER ou CURRENT SQLID est spécifié et l’attribut de longueur de la colonne de chaîne de caractères n’est pas suffisant pour stocker une valeur de 8 caractères lorsque la valeur est exprimée dans le CCSID 37.
  • Une fonction de distribution générée par le système a été spécifiée et la colonne n’est pas définie avec un type distinct défini par l’utilisateur.
  • Une fonction spécifiée n’est pas prise en charge. Une fonction ne peut être spécifiée que lorsque le type de données est un type distinct et, dans ce cas, la fonction spécifiée doit être l’une des fonctions de transtypage générées par le système associées à ce type distinct.
  • Une valeur avec une échelle non nulle a été spécifiée pour l’option START WITH ou INCREMENT BY d’une colonne d’identité avec le type de données DECIMAL.
  • Une constante décimale à virgule flottante (DECFLOAT) est spécifiée. Une virgule flottante décimale ne peut pas être limitée aux nombres d’échelle zéro et, en tant que telle, ne peut pas être utilisée dans les colonnes IDENTITY.
  • WITH DEFAULT est spécifié à l’aide d’une valeur autre que NULL pour une colonne LOB sans attribut INLINE LENGTH.
  • La longueur de la valeur par défaut est supérieure à l’attribut INLINE LENGTH de la colonne LOB.
  • Une valeur par défaut a été spécifiée pour une colonne d’horodatage avec fuseau horaire, mais la valeur par défaut ne contient pas de fuseau horaire.

Action du système
L’instruction ne peut pas être traitée.

Réponse du programmeur
Spécifiez une valeur par défaut valide pour la définition de la colonne et relancez l’instruction.

SQLSTATE
42894

CODE RETOUR -573

TABLE table-name DOES NOT HAVE A UNIQUE KEY WITH THE SPECIFIED COLUMN NAMES

Explication
Une contrainte référentielle ne peut pas être définie avec la table spécifiée comme parent car un index unique avec les noms de colonne spécifiés n’existe pas pour la table parent identifiée.

Action du système
L’instruction ne peut pas être traitée.

Réponse du programmeur
Créez un index unique avec les colonnes spécifiées pour la table parent.

SQLSTATE
42890

CODE RETOUR -571

THE STATEMENT WOULD RESULT IN A MULTIPLE SITE UPDATE

Explication
Ce SQLCODE est émis dans les situations suivantes :

  • Lorsqu’un programme d’application fonctionnant dans un environnement IMS ou CICS® tente de modifier des données à un emplacement distant où les fonctionnalités de mise à jour multisite ne sont pas prises en charge.
  • Lorsqu’un programme d’application comporte des instructions SQL explicites dans une portée de validation qui entraîneraient des mises à jour sur plusieurs sites où l’un des sites sur lesquels les données sont mises à jour ne prend pas en charge la mise à jour multisite.

Ce SQLCODE peut être émis lorsqu’un programme d’application modifie explicitement des données à un emplacement unique dans une portée de validation. Cela peut se produire dans les situations suivantes :

  • Un package associé au programme d’application a été invalidé.
  • Un package ou un plan a été lié à une version de Db2 et le repli se produit vers une version antérieure.

Dans les situations décrites ci-dessus, une liaison automatique implicite est effectuée au nom de l’utilisateur. Une liaison automatique entraîne la mise à jour du catalogue Db2. Les conditions qui doivent exister pour que ce SQLCODE soit émis lorsqu’une liaison automatique se produit sont :

  • Un site sur lequel les données ont été modifiées ne prend pas en charge la mise à jour multi-sites.
  • La liaison automatique se produit sur un site séparé et distinct à partir duquel un programme d’application modifie explicitement les données.
  • Au moment de la liaison automatique, des verrous sont maintenus pour traiter une instruction SQL dans le programme d’application.

Action du système
L’instruction ne peut pas être traitée.

Réponse du programmeur

  • Assurez-vous que toutes les demandes de modification des données sont confinées à un seul emplacement dans une portée de validation donnée pour toute application faisant référence à un emplacement qui ne prend pas en charge la mise à jour multisite.
  • Pour les programmes fonctionnant dans un environnement IMS ou CICS où les systèmes de base de données distants ne prennent pas en charge la mise à jour multisite, toutes les instructions SQL doivent être en lecture seule.
  • Si une liaison automatique provoque l’émission de ce SQLCODE, REBINDEZ le plan ou le package.

SQLSTATE
25000

CODE RETOUR -567

bind-type AUTHORIZATION ERROR USING auth-id AUTHORITY PACKAGE = package-name PRIVILEGE = privilege

Explication
L’ID d’autorisation donné n’a pas le privilège indiqué et ne peut pas appeler la sous-commande indiquée sur le package indiqué.

bind-type
Type de sous-commande de liaison (BIND | REBIND | FREE).
auth-id
ID d’autorisation du propriétaire du package.
package-name
Nom du package (location.collection.package.version)

privilege
Nom du privilège non détenu :

  • BINDADD—Le droit de créer un nouveau package à l’aide de BIND avec l’option ADD.
  • BIND—Le droit de lier (REPLACE) ou de REBIND un package.
  • COPIER—Le pouvoir de COPIER à partir du paquet indiqué
  • CREATE IN—Le droit de créer un package dans la collection indiquée.

Si vous utilisez un contexte approuvé, le jeton auth-id peut renvoyer un rôle au lieu d’un ID d’autorisation. Un rôle est renvoyé si un rôle était en vigueur et la vérification d’autorisation est effectuée par rapport au rôle, plutôt qu’à l’ID d’autorisation de la session, lorsque la condition a été rencontrée. Sinon, un ID d’autorisation est renvoyé. Un rôle est renvoyé au format suivant sous la forme d’un jeton unique :
– ROLE : role-name

Action du système
Le package indiqué n’est ni lié, ni repris, ni libéré.

Réponse du programmeur système
Le privilège indiqué doit être accordé à l’ID d’autorisation qui deviendra le propriétaire du package.

SQLSTATE
42501

CODE RETOUR -562

THE SPECIFIED PRIVILEGES CANNOT BE GRANTED TO PUBLIC.

Explication
L’instruction GRANT a tenté d’accorder l’un des privilèges suivants l’autorisation réservé à l’IDPUBLIC (public) :

  • System DBADM
  • ACCÈS AUX DONNÉES
  • ACCESSCTRL
  • CREATE_SECURE_OBJECT

Ces privilèges ne peuvent pas être accordés à PUBLIC (public).

Action du système
L’instruction ne peut pas être traitée.

Réponse du programmeur
Modifiez l’instruction pour spécifier un privilège qui peut être accordé à PUBLIC ou spécifiez un bénéficiaire autre que PUBLIC.

SQLSTATE
42508

CODE RETOUR -559

ALL AUTHORIZATION FUNCTIONS HAVE BEEN DISABLED

Explication
Le mécanisme d’autorisation a été désactivé dans le sous-système Db2. Par conséquent, les instructions GRANT et REVOKE sont ignorées.

Action du système
L’instruction ne peut pas être traitée. Aucun privilège n’a été accordé ou révoqué.

Réponse du programmeur
N’essayez pas d’exécuter des instructions GRANT ou REVOKE tant que le mécanisme d’autorisation n’est pas activé dans le sous-système Db2.

SQLSTATE
57002

CODE RETOUR -557

INCONSISTENT GRANT/REVOKE KEYWORD keyword. PERMITTED KEYWORDS ARE keyword-list

Explication
L’instruction GRANT ou REVOKE contient une erreur de syntaxe ou d’orthographe au niveau ou avant le «  keyword  » spécifié. Pour aider le programmeur, ‘ keyword-list ‘ fournit une liste des mots-clés qui seraient autorisés dans ce contexte.

Alternativement :

  • Le mélange de privilèges spécifié dans l’instruction GRANT ou REVOKE n’est pas autorisé. Les privilèges doivent tous être du même type et cohérents avec la forme de l’instruction GRANT ou REVOKE.
  • REVOKE UPDATE (liste de colonnes) n’est pas autorisé ; seule REVOKE UPDATE est valide.
  • Les mots clés DELETE, INSERT, SELECT, TRIGGER, UPDATE, REFERENCES et ALTER ne peuvent pas être spécifiés pour une table auxiliaire.

Action du système
L’instruction ne peut pas être traitée.

Réponse du programmeur
Corrigez la syntaxe de l’instruction GRANT ou REVOKE.

SQLSTATE
42852

CODE RETOUR -556

revoke-target CANNOT HAVE THE privilege PRIVILEGE object-name REVOKED BY revoker-id BECAUSE THE REVOKEE DOES NOT POSSESS THE PRIVILEGE OR THE REVOKER DID NOT MAKE THE GRANT

Explication
L’instruction REVOKE n’a pas réussi.

revoke-target
L’ID d’autorisation contre lequel la tentative de révocation a été effectuée.
privilege
Le nom du privilège qui devait être révoqué.
object-name
Nom de l’objet auquel s’applique le privilège.
revoker-id
L’ID d’autorisation qui a tenté de révoquer le privilège.

Si vous utilisez un contexte approuvé, les jetons revoke-target et revoker-id peuvent renvoyer un rôle au lieu d’un ID d’autorisation. Un rôle est renvoyé si un rôle était en vigueur et la vérification d’autorisation est effectuée par rapport au rôle, plutôt qu’à l’ID d’autorisation de la session, lorsque la condition a été rencontrée. Sinon, un ID d’autorisation est renvoyé. Un rôle est renvoyé au format suivant sous la forme d’un jeton unique :

ROLE : role-name

L’échec d’une tentative de révocation est généralement causé par une ou plusieurs des conditions suivantes :

  • L’ID d’autorisation qui était la cible de l’instruction REVOKE, revoke-target, ne possède pas le privilège qui devait être révoqué.
  • L’ID d’autorisation de révocation, revoker-id, n’a pas explicitement accordé le privilège de revoke-target. Un ID autorisation ne peut révoquer que les privilèges qu’il a explicitement accordés à d’autres ID autorisation, à moins que l’ID autorisation ne dispose des droits SECADM ou ACCESSCTRL et spécifie la clause BY.
  • L’ID d’autorisation revoke-target est le propriétaire de l’objet spécifié. Aucun ID d’autorisation, pas même SECADM, ne peut révoquer les privilèges sur un objet du propriétaire de l’objet.
  • Si le privilège est *** : le mot-clé ALL a été utilisé dans l’instruction REVOKE, mais revoke-target ne possédait aucun privilège de révocation.
  • Si revoker-id est ALL : la clause BY ALL a été utilisée dans l’instruction REVOKE, mais revoke-target ne possédait aucun privilège de révocation.
  • Si revoker-id détient les droits SECADM ou ACCESSCTRL : la clause BY peut avoir été omise de l’instruction REVOKE.

Action du système
L’instruction n’a pas été exécutée. Aucun privilège n’a été révoqué d’aucun ID d’autorisation.

Réponse du programmeur
Consultez les tables de catalogue d’autorisations appropriées pour vérifier que revoke-target possède le privilège à révoquer. Émettez une requête avec GRANTEE défini sur la valeur dans revoke-target et la colonne de privilège n’est pas égale aux blancs. Corrigez et relancez l’instruction REVOKE.

SQLSTATE
42504

CODE RETOUR -555

AN AUTHORIZATION ID OR ROLE CANNOT REVOKE A PRIVILEGE FROM ITSELF

Explication
Un ID d’autorisation ou un rôle a tenté d’exécuter une instruction REVOKE dans laquelle cet ID lui-même apparaît comme l’une des entrées de la liste des ID d’autorisation ou des noms de rôle à révoquer.

Un ID d’autorisation ou un rôle ne peut pas RÉVOQUER (REVOKE ) son propre privilège. Cependant, si SQLRULES(STD) est en vigueur ou si CURRENT RULES contient STD, REVOKE elle-même est autorisé.

Action du système
L’instruction ne peut pas être traitée. Aucun privilège n’a été révoqué.

Réponse du programmeur
Effectuez l’une des actions suivantes et relancez l’instruction REVOKE :

  • Supprimez l’ID d’autorisation qui émet l’instruction REVOKE de la liste des ID d’autorisation à révoquer.
  • Émettez l’instruction REVOKE à partir d’un ID d’autorisation différent.

SQLSTATE
42502