Kurtarma Gerçekleştirme
Kaynak yöneticisi, kaynak hatasından sonra işlem katılımcısını yeniden listeleyerek bir işlemdeki dayanıklı listelemelerin çözülmesini kolaylaştırır.
Kurtarma işlemi
Bir kaynak durably listeleme (uygulaması tarafından açıklanan IEnlistmentNotification arabirimi), daha sonra olabilir kurtarma için uygun, çağırması gerekir EnlistDurable yöntemi. Ayrıca, bir kaynak hatası durumunda işlemin katılımcısını EnlistDurable tutarlı bir Guidşekilde etiketlemek için kullanılan bir kaynak yöneticisi tanımlayıcısı (a) ile yöntemi sağlamanız gerekir. Bu nedenle, Guid ilk Enlist çağrısına sağlanan, kurtarma sırasında çağrıdaki resourceManagerIdentifier parametresiyle Reenlist aynı olmalıdır. Aksi takdirde TransactionException oluşturulur. Dayanıklı listelemeler hakkında daha fazla bilgi için bkz . Kaynakları bir İşlemde Katılımcı Olarak Listeleme.
Uygulamanız kalıcı Kaynak Yöneticisi, aldığında 2PC Protokolü (Aşama 1) hazırla kısımda Prepare bildirim, bunu kendi hazırla kaydı bu aşamada oturum açması gerekir. Kayıt, işlemede işlemi tamamlamak için gereken tüm bilgileri içermelidir. Hazırlama kaydına daha sonra kurtarma sırasında preparingEnlistment geri çağırma özelliğinin alınmasıyla RecoveryInformation erişilebilir. Kayıt günlük içinde yapılması gerekmez Prepare yöntemi RM olarak bu iş parçacığı üzerinde yapabilir.
Kurtarma işlemi aşağıdaki iki adımlardan oluşur:
Adım 1 - ReEnlist
Kaynak Yöneticisi şüpheli her liste için hazırla bilgi kaydını inceler. Bu incelenerek yapılır RecoveryInformation özelliği PreparingEnlistment Kaynak Yöneticisi'nde için geçirilen geri çağırma Prepare bildirim aşamasında 1.
İncelediğinden her bir liste için işlem yöneticisinde çağrılır Reenlist . Bu yöntem benzersiz bir üzerinde başarılı Guid , kaynak yöneticisi yanı sıra bir bayt dizisi liste 's bilgileri tanımlar. Yeni bir Enlistment nesne döndürülür. Yeniden listeleme bir özel durumla başarısız olursa kaynak yöneticisinin daha sonra yeniden denemesi gerekir.
Yalnızca çağırmalıdır Reenlist hata verdi bir kaynak yöneticisi yeniden başlatıldığında yöntemi. Ayrıca, yalnızca iki aşamalı işlemenin ilk Hazırlama aşamasında bir kaynak yöneticisi tarafından günlüğe kaydedilen çözümlenmemiş işlemleri yeniden listelemeniz gerekir. Bu yöntemi geçersiz zamanlarda çağırmak için her türlü girişim hatalı sonuçlara neden olabilir.
Bir katılımcı bu yöntem kullanılarak yeniden listelendiğinde, işlemin sonucuna karşılık gelen aşama 2 yöntemleri IEnlistmentNotification (, Commit Rollback veya InDoubt ) uygun şekilde çağrılır.
Adım 2 - kurtarma Tamamlanıyor
Tüm reenlistments tamamlandığında, kaynak yöneticisi çağırır RecoveryComplete yöntemi. Bu yöntem kurtarma işlemini tamamlar ve işlem yöneticisine kaynak yöneticisinin artık şüpheye bağlı işlemleri olmadığını bildirir. Bunu yaptığınızda, kaynak yöneticisi değil çağırır garanti Reenlist yeniden yöntemi.
Yeni işlemlere kaydolmadan önce tüm şüpheli işlemleri çözümlemek için kaynak yöneticisi gerekmez. İlk adım, kaynak yöneticisi işlem yöneticisiyle bir ilişki kurduktan sonra herhangi bir zamanda gerçekleştirilebilir, ancak çağrıldıktan sonra RecoveryComplete (2. adım); 1. adım yeniden gerçekleştirilemez. 2. adım, işlemlerin sonucunu etkilemeden birden çok kez tekrarlanabilir.