我们有一个无法恢复的数据库,因为任何将其置于单用户模式(或脱机)的更改数据库的操作都会失败,因为它被分布式事务阻止。
sp_lock -2 显示以下内容:
spid dbid ObjId IndId Type Resource Mode Status
-2 7 0 0 DB S GRANT
很显然某物上面有锁。
exec sp_who2
显示该数据库没有连接。
select req_transactionUOW
from master..syslockinfo
where req_spid = -2
不返回任何内容(但返回通常的 00000000-0000-0000-0000-000000000000)
在 MSDTC 协调器中,没有标记为“有疑问”的事务。有一个活动事务,但是由于它不是“有疑问”,因此我们无法提交或中止它。
我们如何强制移除该锁?或者我们如何在 MSDTC 中取消该事务
答案1
事实证明这是 SQL Server 2016 和 Java 应用程序中的一个错误:
必须打开跟踪标志才能启用修复(3924)
另外,该修复程序存在错误,因此请确保 SQL Server 已更新到最新的 CU
升级到 SP2 CU10 并启用跟踪标志 (3924) 后,我不再能重现该问题