sql >> Database >  >> RDS >> Oracle

Spring Batch:kon identiteit niet verhogen; geneste uitzondering is com.microsoft.sqlserver.jdbc.SQLServerException:ongeldige objectnaam 'BATCH_JOB_SEQ'?

Waarschijnlijk heeft de fout te maken met de migratie van Oracle naar Azure SQL Server.

Zoals je kunt zien in de broncode van de bibliotheek onder de motorkap gebruikt Spring Batch verschillende strategieën wanneer het genereren van de id's voor taken, taakuitvoeringen en stapuitvoeringen .

In het Oracle-geval gebruiken ze sequenties ; met SQL Server implementeerden ze het genereren van ID's met behulp van tabellen met een identiteitskolom .

Het migratieproces repliceerde ook de verschillende Oracle-reeksen die vereist zijn door Spring Batch en het is zeer waarschijnlijk dat dit het probleem veroorzaakt wanneer de bovengenoemde strategie voor het genereren van SQL Server-id's probeert de volgende waarde te verkrijgen.

Laat de gemigreerde reeksen vallen en maak de drie tabellen vereist voor SQL Server met de juiste waarden:

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



  1. Paarsgewijze matrixsom-aggregatiefunctie?

  2. SQL-query om de lijst met supervisorhiërarchie te krijgen. werknemer --> supervisor --> supervisor

  3. Welke Oracle-tabel gebruikt een reeks?

  4. Een door PDO geretourneerd object in zijn eigen klasse instellen