Obsługa transakcji w OLE DB

Transakcja jest sposobem grupowania lub wsadowego serii aktualizacji źródła danych, tak aby wszystkie wszystkie zakończyły się powodzeniem i zostały zatwierdzone jednocześnie lub (jeśli którykolwiek z nich zakończy się niepowodzeniem) żadna z nich nie zostanie zatwierdzona, a cała transakcja zostanie wycofana. Ten proces zapewnia integralność wyniku źródła danych.

Ole DB obsługuje transakcje z następującymi trzema metodami:

Relacja sesji i transakcji

Pojedynczy obiekt źródła danych może utworzyć co najmniej jeden obiekt sesji, z których każdy może znajdować się wewnątrz lub poza zakresem transakcji w danym momencie.

Gdy sesja nie wprowadza transakcji, wszystkie prace wykonywane w ramach tej sesji w magazynie danych są natychmiast zatwierdzane w każdym wywołaniu metody. (Czasami jest to określane jako tryb autopotwierdzeń lub tryb niejawny).

Gdy sesja wchodzi w transakcję, wszystkie prace wykonywane w ramach tej sesji w magazynie danych są częścią tej transakcji i są zatwierdzane lub przerywane jako pojedyncza jednostka. (Czasami jest to nazywane trybem zatwierdzania ręcznego).

Obsługa transakcji jest specyficzna dla dostawcy. Jeśli używany dostawca obsługuje transakcje, obiekt sesji, który obsługuje ITransaction i ITransactionLocal może wprowadzić transakcję (bez zagnieżdżenia). Klasa CSession szablonów OLE DB obsługuje te interfejsy i jest zalecanym sposobem implementacji obsługi transakcji w języku Visual C++.

Uruchamianie i kończenie transakcji

Metody , Commiti Abort są wywoływane StartTransactionw obiekcie zestawu wierszy w odbiorcy.

Wywołanie ITransactionLocal::StartTransaction powoduje uruchomienie nowej transakcji lokalnej. Po rozpoczęciu transakcji wszelkie zmiany wymagane przez późniejsze operacje nie są stosowane do magazynu danych do momentu zatwierdzenia transakcji.

Wywołanie ITransaction::Commit lub ITransaction::Abort zakończenie transakcji. Commit powoduje, że wszystkie zmiany w zakresie transakcji mają być stosowane do magazynu danych. Abort powoduje, że wszystkie zmiany w zakresie transakcji zostaną anulowane, a magazyn danych pozostanie w stanie, który miał przed rozpoczęciem transakcji.

Transakcje zagnieżdżone

Transakcja zagnieżdżona występuje po rozpoczęciu nowej transakcji lokalnej, gdy aktywna transakcja już istnieje w sesji. Nowa transakcja jest uruchamiana jako zagnieżdżona transakcja poniżej bieżącej transakcji. Jeśli dostawca nie obsługuje zagnieżdżonych transakcji, wywołanie wywołania StartTransaction , gdy w sesji jest już aktywna transakcja, zwraca XACT_E_XTIONEXISTS.

Transakcje rozproszone

Transakcja rozproszona to transakcja, która aktualizuje rozproszone dane; oznacza to, że dane dotyczące więcej niż jednego sieciowego systemu komputerowego. Jeśli chcesz obsługiwać transakcje w systemie rozproszonym, należy użyć programu .NET Framework, a nie obsługi transakcji OLE DB.

Zobacz też

Korzystanie z metod dostępu