次の方法で共有


TransactionManager.Reenlist(Guid, Byte[], IEnlistmentNotification) メソッド

定義

トランザクション内の永続参加要素を再登録します。

public:
 static System::Transactions::Enlistment ^ Reenlist(Guid resourceManagerIdentifier, cli::array <System::Byte> ^ recoveryInformation, System::Transactions::IEnlistmentNotification ^ enlistmentNotification);
public static System.Transactions.Enlistment Reenlist(Guid resourceManagerIdentifier, byte[] recoveryInformation, System.Transactions.IEnlistmentNotification enlistmentNotification);
static member Reenlist : Guid * byte[] * System.Transactions.IEnlistmentNotification -> System.Transactions.Enlistment
Public Shared Function Reenlist (resourceManagerIdentifier As Guid, recoveryInformation As Byte(), enlistmentNotification As IEnlistmentNotification) As Enlistment

パラメーター

resourceManagerIdentifier
Guid

リソース マネージャーを一意に識別する Guid

recoveryInformation
Byte[]

回復情報の追加情報が含まれています。

enlistmentNotification
IEnlistmentNotification

通知を受信する IEnlistmentNotification を実装するリソース オブジェクト。

返品

参加リストを記述する Enlistment

例外

recoveryInformation が無効です。

-又は-

recoveryInformationのトランザクション マネージャー情報が、構成されたトランザクション マネージャーと一致しません。

-又は-

recoveryInformation は、 System.Transactionsによって認識されません。

RecoveryComplete(Guid) は、指定した resourceManagerIdentifierに対して既に呼び出されています。 再登録は拒否されます。

resourceManagerIdentifierは、recoveryInformationで指定された回復情報の内容と一致しません。

注釈

Important

信頼されていないデータを使用してこのメソッドを呼び出すことは、セキュリティ上のリスクです。 このメソッドは、信頼できるデータでのみ呼び出します。 詳細については、「すべての入力を検証する」を参照してください。

リソースマネージャーは、リソース障害後にトランザクション参加者を再参加させることで、トランザクション内の永続的な参加の解決を容易にします。

resourceManagerIdentifier パラメーターは、リソース障害が発生した場合にトランザクションの参加要素に一貫してラベルを付けるために使用されます。 Reenlist メソッドを呼び出すとき、リソース マネージャーは、最初に参加中に EnlistDurable メソッドを呼び出したとき、またはTransactionExceptionがスローされたときに使用したのと同じresourceManagerIdentifierを提供する必要があります。

この方法を使用して参加者を再登録すると、トランザクションの結果 (つまり、CommitRollback、またはInDoubt) に対応するIEnlistmentNotificationのフェーズ 2 メソッドが必要に応じて呼び出されます。

参加者が正常に再登録されたら、 RecoveryComplete を呼び出して復旧を完了する必要があります。

このメソッドは、リソース マネージャーがエラーから再起動した場合にのみ呼び出す必要があります。 さらに、2 フェーズ コミットの最初の準備フェーズ中にリソース マネージャーによってログに記録された未解決のトランザクションのみを再登録する必要があります。 このメソッドを無効な時刻に呼び出そうとすると、誤った結果が発生する可能性があります。

トランザクション マネージャーが失敗し、Two-Phase コミット プロトコルのフェーズ 1 の参加リストで Prepared メソッドを呼び出した後、リソース マネージャーが短時間だけ復旧を実行した場合、リソース マネージャーは InDoubt または Rollback コールバックを受け取る可能性があります。

適用対象