Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Spring Batch:Identität konnte nicht erhöht werden; verschachtelte Ausnahme ist com.microsoft.sqlserver.jdbc.SQLServerException:Ungültiger Objektname „BATCH_JOB_SEQ“?

Wahrscheinlich hängt der Fehler mit der Migration von Oracle zu Azure SQL Server zusammen.

Wie Sie im Quellcode der Bibliothek Unter der Haube verwendet Spring Batch verschiedene Strategien, wenn Generieren der IDs für Jobs, Jobausführungen und Schrittausführungen .

Im Fall von Oracle verwenden sie Sequenzen ; mit SQL Server implementierten sie die ID-Generierung mit Tabellen mit einer Identitätsspalte .

Der Migrationsprozess replizierte auch die verschiedenen Oracle-Sequenzen, die von Spring Batch benötigt werden, und verursacht sehr wahrscheinlich das Problem, wenn die oben erwähnte Strategie zur Generierung von SQL Server-IDs versucht, den nächsten Wert abzurufen.

Bitte löschen Sie die migrierten Sequenzen und erstellen Sie den drei Tabellen erforderlich für SQL Server mit den entsprechenden Werten:

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)
);