Oracle
 sql >> Base de données >  >> RDS >> Oracle

Spring Batch :Impossible d'incrémenter l'identité ; l'exception imbriquée est com.microsoft.sqlserver.jdbc.SQLServerException :nom d'objet non valide 'BATCH_JOB_SEQ' ?

L'erreur est probablement liée à la migration d'Oracle vers Azure SQL Server.

Comme vous pouvez le voir dans le code source de la bibliothèque sous le capot Spring Batch utilise différentes stratégies lorsque génération des identifiants pour les travaux, les exécutions de travaux et les exécutions d'étapes .

Dans le cas d'Oracle, ils utilisent séquences ; avec SQL Server, ils ont implémenté la génération d'identifiants en utilisant tables avec une colonne d'identité .

Le processus de migration a également répliqué les différentes séquences Oracle requises par Spring Batch et est très probablement à l'origine du problème lorsque la stratégie de génération d'identifiant SQL Server susmentionnée tente d'obtenir la valeur suivante.

Veuillez déposer les séquences migrées et créer le trois tables requis pour SQL Server avec les valeurs appropriées :

CREATE TABLE BATCH_STEP_EXECUTION_SEQ (
  ID BIGINT IDENTITY(<last analogous Oracle sequence value>, 1)
);

CREATE TABLE BATCH_JOB_EXECUTION_SEQ (
  ID BIGINT IDENTITY(<last analogous Oracle sequence value>, 1)
);

CREATE TABLE BATCH_JOB_SEQ (
  ID BIGINT IDENTITY(<last analogous Oracle sequence value>, 1)
);