Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Transakční systémy (TPS) založené na KTM by měly protokolovat aktivitu transakcí pomocí common log file system (CLFS). KTM vytváří protokolový stream pro každý objekt manažera transakcí. Každý správce prostředků by měl vytvořit vlastní záznamový proud.
Vytváření log streamů pro objekty Správce transakcí
Když správce prostředků volá ZwCreateTransactionManager, musíte zadat název toku protokolu CLFS. Pokud zadaný datový proud neexistuje, vytvoří ho KTM. Pokud datový proud již existuje, ZwCreateTransactionManager ho znovu otevře. KTM přiřadí tento stream protokolu k objektu správce transakcí.
KTM používá stream protokolu objektu správce transakcí k zaznamenání interních informací o stavu objektu správce transakcí a všech objektů správce prostředků, transakčních objektů a zařazení objektů, které jsou přidruženy k objektu správce transakcí. Pokud jsou transakční operace přerušeny před jejich dokončením, může KTM použít informace v protokolu k určení, zda se mají transakce potvrdit nebo vrátit zpět.
KTM nezaznamená transakční data, která správci prostředků přijímají od klientů ani je odesílají. Správci prostředků musí k zaznamenání těchto informací použít vlastní toky protokolů.
Správci prostředků mohou volat ZwQueryInformationTransactionManager a získat informace o protokolu streamu objektu správce transakcí, například identifikátor GUID nebo název cesty protokolu streamu, který KTM přiřadí streamu.
Vytváření logovacích proudů pro manažery zdrojů
V inicializačním kódu by měl každý správce prostředků zavolat ClfsCreateLogFile k vytvoření vlastního protokolového proudu. Každý správce prostředků by měl použít svůj datový proud k zaznamenání všech informací o transakcích, které vyžaduje k potvrzení, vrácení zpět nebo obnovení dat transakce.
KTM a všichni správci prostředků TPS mohou používat jediný logovací soubor, ale každá komponenta systému TPS musí používat jiný proud v tomto souboru. Informace o tom, jak určit jednotlivé datové proudy v souboru protokolu, naleznete v tématu ClfsCreateLogFile.
KTM pravidelně vytváří oblast restartování ve streamu protokolu správce transakcí. Když KTM provede operaci obnovení, přečte poslední oblast restartování a obnoví stav objektů, které byly otevřeny před vypnutím systému. Podobně by měl správce prostředků pravidelně vytvářet oblasti restartování ve svém protokolovém streamu. Správce prostředků může například vytvořit oblast restartování při každém dokončení transakční operace.
Další informace o restartovacích oblastech v streamech protokolů CLFS najdete v tématu Čtení záznamů restartování ze streamu CLFS. Viz také ClfsWriteRestartArea, ClfsReadRestartAreaa ClfsReadPreviousRestartArea rutiny.
Použití streamů protokolů pro obnovení
Jakmile správce prostředků zavolá ZwCreateTransactionManager, musí volat ZwRecoverTransactionManager. Rutina ZwRecoverTransactionManager přečte stream protokolu objektu správce transakcí a obnoví stav TPS do známého dobrého bodu. Pokud se počítač po posledním načtení správce zdrojů správně vypnul nebo nevypnul, protokolový záznam obsahuje minimální informace. Pokud dojde k chybovému ukončení systému, stream protokolu obsahuje dostatek informací o obnovení všech transakcí do známého stavu.
Jakmile správce prostředků zavolá ZwCreateResourceManager, musí následně zavolat ZwRecoverResourceManager. Rutina ZwRecoverResourceManager se pokusí obnovit transakce přidružené ke každému ze seznamů správce prostředků. Další informace o obnově transakcí manažera prostředků si přečtěte v tématu Řešení operací obnovení.
Ukládání transakčních dat
Správci prostředků, kteří používají streamy protokolů CLFS, by měli ukládat transakční data do oblasti sřazování CLFS. CLFS pravidelně přesouvá data z oblasti uspořádání protokolového proudu do stálého úložiště. Pokud chcete protokolovat operaci, která upravuje data, může správce prostředků provést následující akce:
Před úpravou operace zápisu zkopírujte původní data do oblasti seřazování.
Proveďte operaci na kopii dat beze změny trvalého úložného média databáze.
Zkopírujte nová data do oblasti seřazování.
Pokud správce prostředků obdrží oznámení o vrácení zpět, může obnovit původní data ze streamu protokolu. Pokud obdrží oznámení o potvrzení, správce prostředků může zkopírovat upravená data z datového proudu protokolu do trvalého úložného média databáze.
Správci prostředků mohou také použít ZwSetInformationEnlistment rutinu k ukládání informací o obnovení do objektu zařazení. KTM tyto informace uloží do streamu protokolu a během operací obnovení je přečte z datového proudu protokolu. Správce prostředků proto může tyto informace o obnovení kdykoli získat voláním ZwQueryInformationEnlistment.