Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Menedżer zasobów, klient transakcyjny lub KTM może wycofać transakcję, jeśli ustali, że transakcja nie może zostać zatwierdzona (zazwyczaj z powodu wykrycia błędu).
Aby wycofać transakcję, menedżer zasobów może wywołać ZwRollbackEnlistment. Po tym jak menedżer zasobów wywoła ZwCreateEnlistment w celu rejestracji w transakcji, może wycofać transakcję w dowolnym momencie, zanim wywoła funkcję ZwPrepareComplete.
Klienci transakcyjni mogą wycofać swoje transakcje, wywołując funkcję ZwRollbackTransaction. Po wywołaniu przez klienta transakcyjnego funkcji ZwCreateTransaction w celu utworzenia transakcji, może on wycofać transakcję w dowolnym momencie, zanim wywoła funkcję ZwCommitTransaction.
Ponadto klient transakcyjny może ustawić wartość limitu czasu dla transakcji, wywołując funkcję ZwSetInformationTransaction. KTM cofa transakcję, jeśli nie została zatwierdzona przez określony czas.
Po wywołaniu funkcji ZwRollbackEnlistment lub ZwRollbackTransaction, albo gdy przekroczony zostanie limit czasu, usługa KTM wysyła powiadomienie TRANSACTION_NOTIFY_ROLLBACK do wszystkich menedżerów zasobów.
Gdy każdy menedżer zasobów otrzyma powiadomienie typu TRANSACTION_NOTIFY_ROLLBACK, musi wykonać następujące czynności:
Przywróć dane transakcji do stanu, w jakim się znajdowały, zanim menedżer zasobów dołączył do transakcji.
Zazwyczaj menedżer zasobów przywraca dane transakcji, kopiując zapisane dane początkowe transakcji ze strumienia dziennika do publicznego, trwałego magazynu bazy danych. Aby uzyskać więcej informacji na temat używania strumieni dzienników, zobacz Using Log Streams with KTM (Używanie strumieni dzienników z KTM).
Wywołaj metodę ZwRollbackComplete.
Po wywołaniu funkcji ZwRollbackComplete menedżer zasobów powinien wywołać metodę ZwClose , aby zamknąć dojście rejestracji.
Jeśli menedżer zasobów zainicjował operację wycofywania, musi użyć interfejsu klienta, aby poinformować klienta, że transakcja nie powiodła się.