我正在使用带有 Microsoft SQL 2014 数据库的 Spring Batch。它在带有 OpenJDK 11.0.2 的 Tomcat 9.0.16 服务器上运行
我的问题是我随机出现错误,其中没有可能的 JDBC 连接。Job中定义了两个Steps:第一个包含如下Tasklet
相关代码:
@Bean
public Step stepOne() {
final Tasklet taskletOne = new Tasklet() {
@Override
public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception {
JdbcTemplate cmd = new JdbcTemplate(dataSource);
maxlsnr = cmd.queryForObject("select max(ID) from dbo.MY TABLE", Integer.class);
LOG.info("MAX ID: " + maxlsnr);
return RepeatStatus.FINISHED;
}
};
TaskletStepBuilder stepBuilder = stepBuilderFactory.get("QUERY FOR INTEGER")
.tasklet(taskletOne);
stepBuilder.listener(taskletOne);
return stepBuilder.build();
}
第二步包含一个基于块的 FlatfileItemReader(读取 CSV)、处理器(基于 Step1 中的 # 过滤项目)和一个 Itemwriter(插入 DB)。
我们随机得到以下错误:
2019-03-04 09:14:01.607 ERROR 497 --- [io-8080-exec-92] o.s.b.w.servlet.support.ErrorPageFilter : Forwarding to error page from request [/batch/jobs/myjob] due to exception [Could not open JDBC Connection for transaction; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: Fehler bei der Anmeldung für den Benutzer 'xxxx'. ClientConnectionId:ecb4e02c-e40e-4f43-957d-a870e46703fd]
org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: Fehler bei der Anmeldung für den Benutzer 'xxxx'. ClientConnectionId:ecb4e02c-e40e-4f43-957d-a870e46703fd
数据库显示没有错误,似乎工作没有任何问题。我正在使用最新的 MSSQL JDBC 驱动程序:7.2.1 所有其他程序都可以在相同的用户 + 数据库中正常工作。
我已经使用新创建的凭据进行了尝试,但问题仍然存在。
catspeake
相关分类