Sign in with Microsoft
Sign in or create an account.
Hello,
Select a different account.
You have multiple accounts
Choose the account you want to sign in with.

狀況

當您使用 XA 交易、 Microsoft SQL Server JDBC 驅動程式,與 Microsoft SQL Server 與後端資料庫時,您可能已遺棄待在 SQL Server 上執行的交易如果交易管理員發生當機或連線問題。

此外,可能會遇到下列常見的徵狀︰

  • 擱置的交易,則 SQL Server 的執行個體上一段時間。它們可能會有空值或-2的工作階段 ID,在資料庫中。

  • 交易被封鎖一段時間的交易時發生-2的工作階段 id。這會導致鎖定逾時 」 或 「 若要凍結的執行緒。

原因

如果 SQL Server JDBC 驅動程式不會清除這些交易,然後就能繼續使用資源,並封鎖其他交易,交易管理員與 SQL Server 之間的連線將會遺失未準備的交易。因為 SQL Server 的 XA 實作 JDBC 驅動程式中,SQL Server 無法偵測異常的中斷連線的交易管理員。因此,SQL Server 的這些交易之前留在系統中 XA 交易逾時或在重新啟動資料庫。逾時的 SQL Server 執行個體上使用的無限值,而且不可以在資料庫上設定。

因應措施

若要解決這個問題,請使用下列方法之一︰

  • 當您遇到任何 JAVA 虛擬機器 (JVM) 當機或網路連線問題,導致這些被遺棄的交易時,請重新啟動資料庫伺服器。

  • 清除其資源資料庫上,個別停止成為孤兒的交易。確認交易遭遺棄,,請確定它不是疑問 (已備妥) 或一個目前完成的交易。任何 JVM 和成功的復原週期,最後透過重新啟動相關的交易應該被孤立出來。

  • 設定對 XA 異動逾時值超過您最長的交易,才能迫使他們停止,一旦超過逾時值。您可以藉由呼叫XAResource.setTransactionTimeout()方法來這麼做。

  • 許多協力廠商的交易管理員,呼叫程式碼無法直接存取XAResource物件,與交易管理員並不會設定的交易逾時值。在此情況下,外部應用程式可用來將交易逾時設定為新的預設值。這個新的預設值將用於所有其他未指定交易逾時的交易。

Need more help?

Want more options?

探索訂閱權益、瀏覽訓練課程、瞭解如何保護您的裝置等等。

社群可協助您詢問並回答問題、提供意見反應,以及聆聽來自具有豐富知識的專家意見。

Was this information helpful?

How satisfied are you with the translation quality?
What affected your experience?
By pressing submit, your feedback will be used to improve Microsoft products and services. Your IT admin will be able to collect this data. Privacy Statement.

Thank you for your feedback!

×