サーバー構成: 不確定トランザクションの解決方法

適用対象:SQL ServerAzure SQL Managed InstanceAzure Virtual Machines 上の SQL Server

in-doubt xact resolution オプションは、 Microsoft 分散トランザクション コーディネーター (MS DTC) で解決できないトランザクションの既定の結果を制御する場合に使用します。 トランザクションを解決できない原因は、復旧時の MS DTC のダウン タイムまたは状態が不明なトランザクション結果に関連している場合があります。

次の表は、状態が不明なトランザクションの解決について考えられる結果の値を示しています。

成果値 説明
0 推測しません。 状態が不明なトランザクションを MS DTC で解決できない場合、復旧は失敗します。
1 コミットと見なす。 MS DTC の不確定トランザクションは、コミット済みと見なします。
2 中止と見なします。 MS DTC の状態が不明なトランザクションは、中止されたものと見なします。

次の例のように、長時間にわたるダウン タイムの可能性を最低限に抑えるために、管理者はコミットまたは中断を推測するようにこのオプションを設定できます。

EXECUTE sp_configure 'show advanced options', 1;
GO

RECONFIGURE;
GO

EXECUTE sp_configure 'in-doubt xact resolution', 2; -- presume abort
GO

RECONFIGURE;
GO

EXECUTE sp_configure 'show advanced options', 0;
GO

RECONFIGURE;
GO

また、管理者は、次の例に示すように、DTC 障害を認識できるよう、既定値(推定なし)のままにして、復旧が失敗するようにすることを選ぶ場合があります。

EXECUTE sp_configure 'show advanced options', 1;
GO

RECONFIGURE;
GO

EXECUTE sp_configure 'in-doubt xact resolution', 1; -- presume commit
GO

RECONFIGURE;
GO

ALTER DATABASE pubs SET ONLINE -- run recovery again
;
GO

EXECUTE sp_configure 'in-doubt xact resolution', 0 -- back to no assumptions
;
GO

EXECUTE sp_configure 'show advanced options', 0;
GO

RECONFIGURE;
GO

in-doubt xact resolution オプションは拡張オプションです。 この設定の変更に、sp_configure システム ストアド プロシージャを使用する場合、in-doubt xact resolutionshow advanced options に設定されている場合のみ、1 の設定を変更することができます。 新しい設定は、サーバーを再起動しなくてもすぐに有効になります。

分散トランザクションに関係するすべての SQL Server インスタンスで、このオプションを同じように構成すると、データの不整合を防ぐことができます。