Partager via


O2SS0221 : Appel à la séquence d’identité NEXTVAL non pris en charge (Erreur)

Cet article décrit certaines des raisons pour lesquelles Assistant Migration SQL Server (SSMA) pour Oracle ne convertit pas les procédures en référence à la fonction de séquenceNEXTVAL.

Background

Il SEQUENCE s’agit d’un objet de base de données indépendant dans Oracle, qui crée automatiquement des entiers uniques pour les valeurs de clé primaire/étrangère. A NEXTVAL est utilisé pour accéder à la valeur suivante de la séquence spécifiée.

Lors de la conversion d’objets SEQUENCE , SSMA peut utiliser deux techniques, à savoir Sequence en Séquence et Sequence en Identité. Lorsque SSMA se convertit en séquence, il crée un objet correspondant SEQUENCE dans le schéma SQL Server pour chaque séquence Oracle. Dans le mode Sequence to Identity , SSMA ne crée SEQUENCE pas d’objets dans SQL Server, donc les appels à NEXTVAL la séquence Oracle entraînent un message d’erreur.

Exemple

Prenons l’exemple suivant :

CREATE OR REPLACE PROCEDURE proc1
AS
    t1 NUMBER;
BEGIN
    SELECT customers_seq.NEXTVAL INTO t1 FROM DUAL;
END;

Ici, nous avons une procédure stockée qui tente de récupérer la valeur suivante pour la séquence customers_seq. Si le mode Sequence to Identity est utilisé dans SSMA, le message d’erreur suivant est généré :

O2SS0221 : Appeler la séquence d’identité NEXTVAL non pris en charge

Solutions possibles

Pour résoudre cette erreur, réécrire le code PL/SQL pour éliminer l’accès aux NEXTVALparamètres du projet SSMA ou modifier les paramètres du projet SSMA pour produire des SEQUENCE objets dans SQL Server, au lieu de colonnes d’identité. Pour effectuer les étapes suivantes :

  1. Sélectionnez le menu Outils et sélectionnez Project Paramètres.
  2. Sélectionnez ensuite l’onglet Général .
  3. À présent, sous Groupe de conversion de séquence, définissez Convertir le générateur de séquences en utilisant le générateur de séquence SQL Server.
  4. Appliquez ces paramètres et sélectionnez OK.