Kar*_*mar 6 java sql-server oracle spring spring-batch
我们正在将 Spring Batch 应用程序从 Oracle DB 迁移到 Azure SQL Server。
我在尝试执行迁移到 SQL Server 后的作业时收到以下错误
无法增加身份;嵌套异常是 com.microsoft.sqlserver.jdbc.SQLServerException:无效的对象名称“AppName.BATCH_JOB_SEQ”。
我可以确定 SQL Server 具有所需的序列
在作业存储库配置下方
<batch:job-repository id="jobRepository"
isolation-level-for-create="READ_COMMITTED"
table-prefix="MyApp.BATCH_"/>
Run Code Online (Sandbox Code Playgroud)
以下是 Oracle 中可用的表和序列
下面是 Azure SQL 中可用的表和序列
我应该升级到
该错误可能与从 Oracle 迁移到 Azure SQL Server 相关。
正如您在库的源代码中看到的那样,Spring Batch 在生成作业、作业执行和步骤执行的 id时使用不同的策略。
在 Oracle 的例子中,他们使用序列;在 SQL Server 中,他们使用带有标识列的表实现了 id 生成。
迁移过程还复制了 Spring Batch 所需的不同 Oracle 序列,并且当上述 SQL Server id 生成策略尝试获取下一个值时,很可能会导致问题。
请删除迁移的序列并使用适当的值创建 SQL Server 所需的三个表:
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)
);
Run Code Online (Sandbox Code Playgroud)