Sql-Server

更改數據庫被 -2 阻止

  • October 18, 2019

我們有一個無法恢復的數據庫,因為任何將其置於單使用者模式(或離線)的更改數據庫都會失敗,因為它被分佈式事務阻止。

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 中取消該事務

原來這是 sql server 2016 和 java 應用程序中的一個錯誤:

https://support.microsoft.com/en-us/help/3145492/fix-xa-transactions-aren-t-cleaned-when-you-exit-a-java-application-in

必須打開跟踪標誌才能啟用修復 (3924)

該修復還有一個錯誤,因此請確保將 sql server 更新到最新的 CU

https://support.microsoft.com/en-us/help/4511816/fix-access-violation-occurs-when-you-enable-tf-3924-to-clean-orphaned

以及該修復的額外修復

https://support.microsoft.com/en-us/help/4519668/fix-access-violation-occurs-when-you-enable-tf-3924-to-clean-orphaned

升級到 SP2 CU10 並啟用跟踪標誌 (3924) 後,我無法再重現該問題

引用自:https://serverfault.com/questions/981179