sql-server - Spring 批处理 "Invalid object name BATCH_JOB_INSTANCE"

标签 sql-server spring spring-boot hibernate spring-batch

我创建了一个 Spring Batch 来查询 Azure SQL Server 数据库并将数据写入 CSV 文件。我没有数据库的创建权限。我在运行批处理时收到此错误Invalid Object name BATCH_JOB_INSTANCE。我不想在主数据库中创建 Spring Batch 元数据表。或者,如果我可以将它们放在另一个本地或内存数据库(例如 h2db)中,那将会很有帮助。 我还添加了 spring-batch-initialize-schema=never ,这里类似问题的大多数答案都是这种情况,但这没有帮助。

编辑:

我通过扩展 DefaultBatchConfigurer 类并覆盖 setDataSource 来阻止在主数据库中创建元数据表,从而解决了无效对象名称 错误code> 方法,从而在内存中的映射存储库中创建它们。现在我想尝试两种选择:

  1. 如何在本地数据库或内存数据库(如 h2db)中创建元数据表。
  2. 或者,如果我已经在主数据库中创建了元数据表,其架构与我从中获取的主表不同。如何将我的作业指向另一个架构中的元数据表,以在其中存储作业和步骤详细信息数据。
@Configuration
public class SpringBatchConfig extends DefaultBatchConfigurer{

@Override
    public void setDataSource(DataSource datasource) {

    }
...

我的 application.properties 文件如下所示:

spring.datasource.url=
spring.datasource.username=
spring.datasource.password=
spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver

spring-batch-initialize-schema=never
spring.batch.job.enabled=false

spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.SQLServer2012Dialect

最佳答案

How to have the meta data tables to be created in a local db or in-memory db like h2db.

您可以使用spring.batch.initialize-schema=embedded来实现这一点。

Or If I have the meta data tables created already in the main database, in a different schema than my main table I'm fetching from. How to point my job to those meta-data tables in another schema, to store the job and step details data in those.

Spring Batch 适用于数据源,而不是特定的模式。如果元数据表位于不同的架构中,那么您需要创建指向该架构的第二个数据源并将其设置在作业存储库中。

关于sql-server - Spring 批处理 "Invalid object name BATCH_JOB_INSTANCE",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64094079/

相关文章:

sql - 从 SQL Server 表填充和编辑数据网格

sql - 将所有与不存在的并入并插入

java - Prototype Bean 中的 Autowiring

spring - Controller 方法上的自定义注释以拦截请求并验证

java - 将 POST 从一个 api 转发到另一个 api 时出现错误代码 415

java - 更改RequestContextFilter在过滤器链中的顺序

sql-server - 我的任务是维护 ITEMS 库存

sql-server - 需要按计数器分组作为返回的列

java.lang.NoClassDefFoundError : org/springframework/core/io/Resource Exception

java - 如何解决 Spring 集成的连接或配置问题?