批处理结束时检测到无法提交的事务。该事务被回滚。

4
我们在进行服务器迁移时遇到了问题。我们有一个应用程序,它的交易量非常大,在一个数据库服务器上运行良好。但是当将同一数据库转移到另一个服务器时,我们遇到了以下错误。

Server: Msg 3998, Level 16, State 1, Line 1
检测到无法提交的事务批处理的末尾。事务被回滚。

相同的数据库已经复制到另一个服务器,并且包含所有数据。如果我们将连接字符串更改为旧服务器,则可以正常工作。
有人能提出建议吗?
2个回答

2

这条信息意味着事务中的其他参与者投票回滚。此后,事务必须失败。

因此,这条消息是结果而非原因。你是否收到任何早期/其他错误消息?

当您在管理工具中运行查询时会发生什么?


SQL管理工具会显示确切的错误信息,而不是包装器回滚错误消息。 - Sangram Nandkhile
此外,我建议您检查一下是否在任何地方使用了SET XACT_ABORT ON,这是我遇到的问题。 - Sal

0

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


在T-SQL中,是否有一种方法可以检查当前事务是否可提交? - Anton Shepelev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接