Podpora transakcí v prostředí OLE DB
Transakce je způsob, jak seskupit (nebo dávkovat) řadu aktualizací zdroje dat tak, aby všechny proběhly úspěšně a byly potvrzeny najednou nebo (pokud některý z nich selže), žádné nejsou potvrzeny a celá transakce se vrátí zpět. Tento proces zajišťuje integritu výsledku ve zdroji dat.
OLE DB podporuje transakce s následujícími třemi metodami:
Vztah relací a transakcí
Jeden objekt zdroje dat může vytvořit jeden nebo více objektů relace, z nichž každý může být uvnitř nebo mimo rozsah transakce v daném okamžiku.
Pokud relace nezadává transakci, všechny práce provedené v rámci této relace v úložišti dat se okamžitě potvrdí při každém volání metody. (Tento režim se někdy označuje jako režim automatického dokončování nebo implicitní režim.)
Když relace zadá transakci, veškerá práce v rámci této relace v úložišti dat je součástí této transakce a je potvrzena nebo přerušena jako jedna jednotka. (Tento režim se někdy označuje jako režim ručního potvrzení.)
Podpora transakcí je specifická pro poskytovatele. Pokud poskytovatel, kterého používáte, podporuje transakce, objekt relace, který podporuje ITransaction
a ITransactionLocal
může zadat (vnořenou) transakci. Šablony OLE DB CSession podporují tato rozhraní a je doporučeným způsobem implementace podpory transakcí v jazyce Visual C++.
Zahájení a ukončení transakce
Volání StartTransaction
, Commit
a Abort
metody v objektu sady řádků příjemce.
Volání ITransactionLocal::StartTransaction
spustí novou místní transakci. Při spuštění transakce se všechny změny, které vyžadují pozdější operace, nebudou použity v úložišti dat, dokud transakce nezapíšete.
Volání ITransaction::Commit
nebo ITransaction::Abort
ukončení transakce. Commit
způsobí všechny změny v rozsahu transakce, které se použijí v úložišti dat. Abort
způsobí, že všechny změny v rozsahu transakce budou zrušeny a úložiště dat zůstane ve stavu, který měl před zahájením transakce.
Vnořené transakce
Vnořená transakce nastane, když spustíte novou místní transakci, pokud aktivní transakce již v relaci existuje. Nová transakce se spustí jako vnořená transakce pod aktuální transakcí. Pokud zprostředkovatel nepodporuje vnořené transakce, volání StartTransaction
, pokud už je aktivní transakce relace vrátí XACT_E_XTIONEXISTS.
Distribuované transakce
Distribuovaná transakce je transakce, která aktualizuje distribuovaná data; to znamená, že data ve více než jednom síťovém počítačovém systému. Pokud chcete podporovat transakce přes distribuovaný systém, měli byste místo podpory transakcí OLE DB použít rozhraní .NET Framework.