分享方式:


伺服器組態不能肯定的 xact 解析

適用於:Azure SQL Database Azure SQL 受控執行個體 Azure VM 上的 SQL Server

使用 in-doubt xact resolution 選項可控制 Microsoft Distributed Transaction Coordinator (MS DTC) 無法解析之交易的預設結果。 無法解析交易的原因,可能與 MS DTC 停機,或在復原時出現未知的交易結果等狀況有關。

下表列出解析不確定的交易時,可能出現的結果值。

結果值 描述
0 無假設結果。 如果 MS DTC 有無法解析的未決交易,復原即會失敗。
1 假設為認可。 假設任何 MS DTC 未決交易都為已提交。
2 假設為中止。 假設任何 MS DTC 未決交易都為已中止。

若要將停機時間降到最低,系統管理員可將此選項設為「假設為認可」或「假設為中止」,如以下範例所示。

sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'in-doubt xact resolution', 2; -- presume abort
GO
RECONFIGURE;
GO
sp_configure 'show advanced options', 0;
GO
RECONFIGURE;
GO

或者,系統管理員也可以採用預設值 (無假設結果) 並允許復原失敗,以便記錄 DTC 失敗,如以下範例所示。

sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'in-doubt xact resolution', 1; -- presume commit
GO
RECONFIGURE
GO
ALTER DATABASE pubs SET ONLINE -- run recovery again
GO
sp_configure 'in-doubt xact resolution', 0 -- back to no assumptions
GO
sp_configure 'show advanced options', 0
GO
RECONFIGURE
GO

in-doubt xact resolution 選項為進階選項。 若使用 sp_configure 系統預存程序來變更設定,只有當 show advanced options 設為 1 時,才能變更 in-doubt xact resolution。 設定會立即生效,伺服器不必重新啟動。

注意

在與分散式交易有關的所有 SQL Server 執行個體上讓此選項的設定維持一致,有助於避免資料不一致。