【发布时间】:2021-01-13 13:23:31
【问题描述】:
我创建了一个 spring 批处理来查询 Azure SQL 服务器数据库并将数据写入 CSV 文件。我没有数据库的create 权限。我在运行批处理时收到此错误Invalid Object name BATCH_JOB_INSTANCE。我不希望在主数据库中创建 spring 批处理元数据表。或者,如果我可以将它们放在另一个本地或内存数据库(如 h2db)中,那将会很有帮助。
我也已经添加了spring-batch-initialize-schema=never,对于类似问题的大多数答案都是如此,但这没有帮助。
编辑:
我解决了Invalid Object name 错误,方法是通过扩展DefaultBatchConfigurer 类并覆盖setDataSource 方法来阻止将元数据表创建到主数据库中,从而在内存中的映射存储库中创建它们。现在我想尝试两种选择:
- 如何在本地数据库或内存数据库(如 h2db)中创建元数据表。
- 或者,如果我已经在主数据库中创建了元数据表,则使用与我从中获取的主表不同的架构。如何将我的工作指向另一个架构中的那些元数据表,以在其中存储工作和步骤详细信息数据。
@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
【问题讨论】:
标签: sql-server spring spring-boot hibernate spring-batch