当前位置: 首页 > 面试题库 >

在批处理结束时检测到不可提交的事务。交易回滚

翟淮晨
2023-03-14
问题内容

我们在服务器迁移方面遇到问题。我们有一个拥有大量事务的应用程序,它在一台数据库服务器上运行良好。但是,当将同一数据库传输到另一台服务器时。我们面临以下错误。

Server: Msg 3998, Level 16, State 1, Line 1
Uncommittable transaction is detected at the end of the batch. The transaction is rolled back.

同一数据库将所有数据复制到另一台服务器。如果我们将连接字符串更改为旧服务器,则它可以正常工作。

有人可以建议吗?


问题答案:

您似乎遇到的问题是,一个数据库中的记录可以接受,而另一个数据库中的记录却可以接受。建议您查看两个数据库结构之间的差异(是的,我知道它们应该是相同的,但显然它们并不相同)。怀疑您会发现两者之间的排序规则差异,数据类型差异或数据长度差异。您可能还会有一个表,其中缺少标识定义,因此由于它是必填字段且值缺失,因此无法插入。像SQlCompare这样的工具很容易使用来发现差异。



 类似资料:
  • 我是WebServices的新手。Im通过标记为“Transacted”的camel路由向cxfendpoint发送webservice请求,并得到响应。在同一事务路由中,next语句抛出一个异常,以便我的异常处理程序回滚该事务。 我可以在我的事务回滚中找到其他东西,除了我的webservice请求响应,因为它已经提交了。

  • 下面的代码是否可以正常工作,或者我需要在工作之前开始交易。

  • 问题内容: 我叫两种方法,第一种方法更新一个表,第二种方法在另一个表中插入一条记录。当第二笔交易失败时,它不会回退第一笔交易。 这是我的支持豆: EJB接口: EJB类: 我的自定义例外: 编辑: 添加了DAO类: 和DAO接口: 问题答案: 在这种情况下,关键问题是某些JBoss版本中数据源中的默认错误。原始代码很好,并且可以在其他应用程序服务器(WebSphere App Server和轻量级

  • 如果我正在读写本地文件,那么对远程数据库服务器的更新相对昂贵。如果增加[chunk-size],内存使用量就会上升。 提交频率对编写本地文件并没有太大的影响,所以对我来说,元数据更新才是一个问题。该步骤是可重新启动的,因此从技术上讲,我不需要记录中间提交计数。 对于JobRepository,我可以只使用map或内存数据库,但我需要其他信息,例如持久化的开始/结束时间,而且这个问题只涉及一个步骤。

  • 以下是使用事务教程中描述的提交和回滚的代码示例。 此示例代码是基于前面章节中完成的环境和数据库设置编写的。 复制并将以下示例代码保存到:CommitAndRollback.java 中,编译并运行如下 - 编译并运行结果如下 -