Tous les articles par Mr COBOL

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

CODE RETOUR -554

AN AUTHORIZATION ID OR ROLE CANNOT GRANT A PRIVILEGE TO ITSELF

Explication
Un ID d’autorisation ou un rôle a tenté d’exécuter une instruction GRANT 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 « bénéficiaire ».

Un ID d’autorisation ou un rôle ne peut pas s’accorder un privilège. Cependant, si SQLRULES(STD) est en vigueur ou si CURRENT RULES contient STD, GRANT à elle-même est autorisé.

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

Réponse du programmeur
Supprimez la référence à l’ID d’autorisation qui a émis l’instruction GRANT de la liste des ID d’autorisation des bénéficiaires.

SQLSTATE
42502

CODE RETOUR -553

AUTHORIZATION ID OR SCHEMA NAME name SPECIFIED IS NOT VALID FOR REQUESTED OPERATION

Explication
La déclaration a échoué pour l’une des raisons suivantes :

  • L’ID d’autorisation spécifié comme valeur de name ou de variable hôte dans l’instruction SQL SET CURRENT SQLID n’est ni l’ID d’autorisation principal de l’utilisateur ni l’un des ID d’autorisation secondaires associés.
  • L’ID d’autorisation spécifié comme valeur de l’option PACKAGE OWNER pour une instruction CREATE ou ALTER PROCEDURE n’est ni l’ID d’autorisation principal de l’utilisateur ni l’un des ID d’autorisation secondaires associés.
  • SYSPUBLIC ne peut pas être spécifié comme schéma d’un alias privé pour une séquence. Les noms de schéma ne doivent pas commencer par « SYS », car des schémas supplémentaires commençant par ces lettres pourraient être réservés à l’usage exclusif des produits Db2 à l’avenir.

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

Réponse de l’utilisateur
Remplacez le name par une valeur que l’utilisateur peut utiliser.

SQLSTATE
42503

CODE RETOUR -552

authorization-id DOES NOT HAVE THE PRIVILEGE TO PERFORM OPERATION operation

Explication
Une opération a été tentée par un ID d’autorisation qui n’a pas l’autorité requise.

authorization-id
L’ID d’autorisation qui a tenté d’effectuer l’opération.
Si vous utilisez un contexte approuvé, la valeur authorization-id peut être 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 DOES NOT HAVE THE PRIVILEGE TO PERFORM OPERATION operation

operation
L’opération qui a été tentée.

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

Réponse de l’administrateur
Recherchez une tentative de violation d’autorisation.

Réponse du programmeur
Assurez-vous que l’ID d’autorisation a reçu l’autorité nécessaire pour effectuer l’opération.

L’autorité SECADM est requise pour révoquer l’un des éléments suivants :

  • Droits DBADM système
  • Autorité DATAACCESS
  • Autorité ACCESSCTRL
  • Privilège CREATE_SECURE_OBJECT

SQLSTATE
42502

CODE RETOUR -549

THE statement STATEMENT IS NOT ALLOWED FOR object_type1 object_name BECAUSE THE BIND OPTION DYNAMICRULES(RUN) IS NOT IN EFFECT FOR object_type2

Explication
Un programme a tenté d’émettre l’instruction SQL indiquée qui est l’une des nombreuses instructions SQL qui ne peuvent pas être émises à partir d’un plan ou d’un package pour lequel l’option DYNAMICRULES(RUN) n’est pas en vigueur. Ces instructions SQL sont :

  • Instruction GRANT dynamique
  • Instruction REVOKE dynamique
  • Instruction ALTER dynamique
  • Instruction CREATE dynamique
  • Instruction DROP dynamique

L’instruction SQL indiquée est liée à l’un des éléments suivants :

  • Le plan ou package nommé qui n’était pas lié à l’option DYNAMICRULES(RUN)
  • Le package nommé qui n’était pas lié à l’option DYNAMICRULES, mais qui est ajouté à un plan qui n’était pas lié à DYNAMICRULES(RUN)

statement
L’instruction SQL en erreur
object_type1
FORFAIT ou DBRM
object_name
Si object_type1 est PACKAGE, object_name est le nom du package au format ‘location-id.collection-id.package-id’.
Si object_type1 est DBRM, object_name est le nom du DBRM au format « plan-name DBRM-name ».

object_type2
PLAN ou FORFAIT
Si object_type1 est PACKAGE, object_type2 peut être PACKAGE ou PLAN (selon celui qui est lié à une valeur DYNAMICRULES autre que RUN).

Si object_type1 est DBRM, object_type2 est PLAN.

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

Réponse du programmeur
Effectuez l’une des actions suivantes pour corriger l’erreur :

  • Si l’instruction SQL est incorporée, supprimez-la, précompilez et compilez à nouveau le programme d’application, puis relancez la commande BIND avec l’option DYNAMICRULES appropriée.
  • Utilisez l’instruction SQL avec un package ou un plan lié à DYNAMICRULES(RUN).
  • Exécutez la commande REBIND avec l’option DYNAMICRULES(RUN) pour le plan ou le package auquel l’instruction SQL est liée.

Déterminez si l’instruction SQL doit être supprimée du programme ou si le plan ou le package doit être rebondi avec l’option DYNAMICRULES(RUN).

SQLSTATE
42509

CODE RETOUR -548

A CHECK CONSTRAINT THAT IS DEFINED WITH column-name IS INVALID

Explication
Une contrainte de vérification dans l’instruction CREATE TABLE ou ALTER TABLE n’est pas valide pour une ou plusieurs des raisons suivantes :

  • La définition de contrainte fait référence à une colonne qui a une procédure de champ.
  • La définition de contrainte fait référence à une colonne avec un type de données qui est plus bas dans la hiérarchie des types de données numériques que le type de données de tout autre opérande. La hiérarchie est la suivante :
small integer < large integer 
  < big integer < decimal
  < single precision float 
  < double precision float
  • La définition de contrainte fait référence à une colonne avec un type de données numériques qui n’a pas le même type de données numériques que celui des autres opérandes de colonne.
  • La définition de contrainte fait référence à une colonne dont la longueur est plus courte que les autres opérandes lorsque la colonne et les autres opérandes ne sont pas des types de données chaîne de caractères.
  • La définition de contrainte fait référence à une colonne ROWID.
  • La définition de contrainte fait référence à une colonne LOB.
  • La définition de contrainte fait référence à une colonne DECFLOAT.
  • La définition de contrainte fait référence à une colonne Unicode Db2 11 dans une table EBCDIC.
  • La contrainte contient une colonne XML.
  • La définition de contrainte contient une expression XMLQuery.
  • Une liste d’arguments XMLQUERY ou XMLEXISTS contenait deux arguments portant le même nom.
  • L’expression de colonne générée fait référence à une colonne pour un masque de colonne est défini.
  • La définition de contrainte contient une fonction intégrée qui dépend de la valeur d’un registre spécial.
  • La définition de contrainte contient une variable globale.

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

Pour ALTER TABLE, la contrainte de vérification n’est pas ajoutée à la table d’objets. La définition de la table est inchangée.

Pour CREATE TABLE, la table n’est pas créée.

Réponse du programmeur
Corrigez la définition de la contrainte de vérification et exécutez à nouveau l’instruction.

SQLSTATE
42621

CODE RETOUR -546

THE CHECK CONSTRAINT constraint-name IS INVALID

Explication
Une contrainte de vérification dans l’instruction CREATE TABLE ou ALTER TABLE n’est pas valide pour une ou plusieurs des raisons suivantes :

  • La définition de contrainte fait référence à une colonne qui a une procédure de champ.
  • La définition de contrainte fait référence à une colonne avec un type de données qui est plus bas dans la hiérarchie des types de données numériques que le type de données de tout autre opérande. La hiérarchie est la suivante :
small integer < large integer < decimal  
< single precision float 
< double precision float
  • La définition de contrainte fait référence à une colonne avec un type de données numériques qui n’est pas le même type de données numériques que celui des autres opérandes de colonne.
  • La définition de contrainte fait référence à une colonne dont la longueur est plus courte que les autres opérandes lorsque la colonne et les autres opérandes ne sont pas des types de données chaîne de caractères.
  • La définition de contrainte fait référence à une colonne DECFLOAT.
  • La définition de contrainte fait référence à une colonne Unicode Db2 11 dans une table EBCDIC.
  • La définition de contrainte fait référence à une fonction intégrée ou définie par l’utilisateur.
  • La définition de contrainte utilise une fonction de conversion qui nécessite la conversion des données. Les seules fonctions autorisées dans une contrainte de vérification sont les fonctions de conversion qui ne nécessitent pas de conversion des données.
  • La définition de contrainte contient une variable globale.
  • La contrainte contient une colonne XML
  • La définition de contrainte contient une expression XMLQuery.

constraint-name
Nom de la contrainte de vérification.

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

Pour ALTER TABLE, la contrainte de vérification n’est pas ajoutée à la table d’objets. La définition de la table est inchangée.

Pour CREATE TABLE, la table n’est pas créée.

Réponse du programmeur
Corrigez la définition de la contrainte de vérification et exécutez à nouveau l’instruction.

SQLSTATE
42621