Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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 NEXTVAL
paramè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 :
- Sélectionnez le menu Outils et sélectionnez Project Paramètres.
- Sélectionnez ensuite l’onglet Général .
- À 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.
- Appliquez ces paramètres et sélectionnez OK.
Messages de conversion connexes
- O2SS0188 : séquence introuvable dans les métadonnées sources (Erreur)
- O2SS0214 : la colonne a une séquence liée, mais la séquence n’a pas été trouvée dans les métadonnées sources
- O2SS0217 : Appel à la séquence d’identité CURRVAL non pris en charge (Erreur)