다음을 통해 공유


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

매개 변수

resourceManagerIdentifiermanager
Guid

리소스 관리자를 고유하게 식별하는 Guid입니다.

recoveryInformationrecoveryInfo
Byte[]

복구 정보의 추가 정보를 포함합니다.

enlistmentNotificationnotification
IEnlistmentNotification

IEnlistmentNotification을 구현하여 알림을 수신하는 리소스 개체입니다.

반환

Enlistment

참여 항목을 설명하는 Enlistment입니다.

예외

recoveryInformation이 잘못되었습니다.

또는 recoveryInformation의 트랜잭션 관리자 정보가 구성된 트랜잭션 관리자와 일치하지 않는 경우

또는 System.TransactionsRecoveryInformation을 인식할 수 없는 경우

지정된 resourceManagerIdentifier에 대해 RecoveryComplete(Guid)가 이미 호출된 경우. 다시 참여가 거부됩니다.

resourceManagerIdentifierrecoveryInformation의 지정된 복구 정보 내용과 일치하지 않는 경우

설명

중요

신뢰할 수 없는 데이터로 이 메서드를 호출하는 것은 보안상 위험합니다. 신뢰할 수 있는 데이터로만 이 메서드를 호출하세요. 자세한 내용은 모든 입력 유효성 검사를 참조하세요.

리소스 관리자는 리소스 실패 후 트랜잭션 참가자를 다시 등록하여 트랜잭션의 지속성 인리스트먼트를 쉽게 확인할 수 있습니다.

resourceManagerIdentifier 매개 변수는 리소스 오류가 발생할 경우 트랜잭션 참가자에게 일관되게 레이블을 지정하는 데 사용됩니다. 메서드를 호출할 Reenlist 때 리소스 관리자는 원래 인리스트먼트 중에 메서드를 호출 EnlistDurable 하거나 TransactionException throw할 때 사용한 것과 동일하게 resourceManagerIdentifier 제공해야 합니다.

이 메서드를 사용하여 참가자를 다시 목록에 추가하면 트랜잭션의 결과(즉, Commit Rollback 또는 InDoubt )에 해당하는 2단계 메서드 IEnlistmentNotification 가 적절하게 호출됩니다.

참가자가 성공적으로 다시 등록되면 호출 RecoveryComplete 하여 복구를 완료해야 합니다.

리소스 관리자가 실패에서 다시 시작되는 경우에만 이 메서드를 호출해야 합니다. 또한 2단계 커밋의 초기 준비 단계에서 리소스 관리자가 기록한 해결되지 않은 트랜잭션만 다시 등록해야 합니다. 잘못된 시간에 이 메서드를 호출하려고 하면 잘못된 결과가 발생할 수 있습니다.

트랜잭션 관리자가 실패하고 리소스 관리자가 Two-Phase 커밋 프로토콜의 1단계에서 인리스트먼트에서 메서드를 호출 Prepared 한 후 잠시 후에만 복구를 수행하는 경우 리소스 관리자는 콜백을 받거나 Rollback 콜백을 받을 InDoubt 수 있습니다.

복구에 대한 자세한 내용은 복구 수행을 참조하세요.

참고 이 메서드는 LinkDemand 신뢰할 수 없는 코드에서 호출되지 않도록 방지합니다. 그러나 권한 집합을 소유 FullTrust 하려면 직접 호출자만 필요합니다.

적용 대상

추가 정보