Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
KTM tabanlı işlem işleme sistemleri (TPS) Ortak Günlük Dosyası Sistemi (CLFS) kullanarak işlem etkinliğini günlüğe kaydetmelidir. KTM, her işlem yöneticisi nesnesi için bir günlük akışı oluşturur. Her kaynak yöneticisi kendi günlük akışını oluşturmalıdır.
Transaction Manager Nesneleri için Günlük Akışları Oluşturma
Kaynak yöneticiniz ZwCreateTransactionManagerçağırdığında, CLFS günlük akışının adını belirtmeniz gerekir. Belirtilen akış yoksa, KTM bunu oluşturur. Eğer akış zaten mevcutsa, ZwCreateTransactionManager onu yeniden açar. KTM bu günlük akışını işlem yöneticisi nesnesine atar.
KTM, işlem yöneticisi nesnesi ve işlem yöneticisi nesnesiyle ilişkili tüm kaynak yöneticisi nesneleri, işlem nesneleri ve listeleme nesneleri hakkındaki iç durum bilgilerini kaydetmek için işlem yöneticisi nesnesinin günlük akışını kullanır. İşlemsel işlemler tamamlanmadan önce kesilirse, KTM işlemlerin tamamlanıp tamamlanmayacağını veya geri alınıp alınmayacağını belirlemek için günlükteki bilgileri kullanabilir.
KTM, kaynak yöneticilerinin istemcilerden aldığı veya istemcilere gönderdiği işlem verilerini kaydetmez. Kaynak yöneticileri bu bilgileri kaydetmek için kendi günlük akışlarını kullanmalıdır.
Kaynak yöneticileri, bir işlem yöneticisi nesnesinin günlük akışı hakkında, örneğin günlük akışının yol adı veya KTM'nin akışa atadığı GUID gibi, bilgi almak için ZwQueryInformationTransactionManager çağırabilir.
Kaynak Yöneticileri için Kayıt Akışları Oluşturma
Başlatma kodunda, her kaynak yöneticisinin kendi günlük akışını oluşturmak için ClfsCreateLogFile çağırması gerekir. Her kaynak yöneticisi, işlem verilerini işlemek, geri almak veya kurtarmak için gereken işlemler hakkındaki tüm bilgileri kaydetmek için akışını kullanmalıdır.
KTM ve TPS'nin tüm kaynak yöneticileri tek bir günlük dosyası kullanabilir, ancak her TPS bileşeninin günlük dosyası içinde farklı bir akış kullanması gerekir. Günlük dosyası içinde tek tek akışları belirtme hakkında bilgi için bkz. ClfsCreateLogFile.
KTM düzenli aralıklarla işlem yöneticisinin günlük akışında bir yeniden başlatma alanı oluşturur. KTM bir kurtarma işlemi gerçekleştirdiğinde, sistem kapanmadan önce açık olan nesnelerin durumunu kurtarmak için son yeniden başlatma alanını okur. Benzer şekilde, kaynak yöneticinizin günlük akışında düzenli aralıklarla yeniden başlatma alanları oluşturması gerekir. Örneğin, işlemsel bir işlem her tamamlandığında kaynak yöneticiniz yeniden başlatma alanı oluşturabilir.
Daha fazla bilgi için, CLFS günlük akışlarındaki yeniden başlatma alanlarına bakınız: CLFS Akışından Yeniden Başlatma Kayıtlarını Okuma. Ayrıca ClfsWriteRestartArea, ClfsReadRestartAreave ClfsReadPreviousRestartArea rutinlerine bakın.
Kurtarma için Kayıt Akışlarını Kullanma
Kaynak yöneticiniz ZwCreateTransactionManagerçağrısı yaptıktan sonra ZwRecoverTransactionManagerçağrısı yapmalıdır. ZwRecoverTransactionManager yordamı, TPS'nin durumunu bilinen iyi bir noktaya kurtarmak için işlem yöneticisi nesnesinin günlük akışını okur. Kaynak yöneticisi en son yüklendikten sonra bilgisayar düzgün bir şekilde kapatılırsa veya kapatılmazsa, günlük akışı çok az bilgi içerir. Bir sistem çökmesi oluştuysa, kayıt akışı tüm işlemleri bilinen bir duruma geri yüklemek için yeterli kurtarma bilgilerini barındırır.
Kaynak yöneticiniz ZwCreateResourceManagerçağrısı yaptıktan sonra ZwRecoverResourceManagerçağrısı yapmalıdır. ZwRecoverResourceManager rutini, kaynak yöneticisinin katılımlarının her biriyle ilişkili olan işlemleri kurtarmaya çalışır. Kaynak yöneticisinin işlemlerini kurtarma hakkında daha fazla bilgi için bkz. Kurtarma İşlemlerini İşleme.
İşlem Verilerini Depolama
CLFS günlük akışlarını kullanan kaynak yöneticileri, işlem verilerini CLFS marshalling alanlarındadepolamalıdır. CLFS, günlük akışının sıralama alanındaki verileri düzenli aralıklarla kalıcı bir depolama ortamına taşır. Verileri değiştiren bir işlemi günlüğe kaydetmek için kaynak yöneticisi aşağıdakileri yapabilir:
Yazma işlemi değiştirmeden önce özgün verileri marshalling alanına kopyalayın.
Veritabanının kalıcı depolama medyasını değiştirmeden verilerin bir kopyası üzerinde işlemi gerçekleştirin.
Yeni verileri toplama alanına kopyalayın.
Kaynak yöneticisi bir geri alma bildirimi alırsa, özgün verileri günlük akışından geri yükleyebilir. Bir işleme bildirimi alırsa, kaynak yöneticisi değiştirilen verileri günlük akışından veritabanının kalıcı depolama ortamına kopyalayabilir.
Kaynak yöneticileri, kurtarma bilgilerini bir listeleme nesnesinde depolamak için ZwSetInformationEnlistment yordamını da kullanabilir. KTM bu bilgileri günlük akışına kaydeder ve kurtarma işlemleri sırasında günlük akışından okur. Bu nedenle, bir kaynak yöneticisi ZwQueryInformationEnlistmentçağırarak bu kurtarma bilgilerini istediği zaman alabilir.