Podpora transakcí v OLE DB
Transakce je způsob seskupení nebo dávkování řady aktualizací zdroje dat tak, aby buď všechny proběhly úspěšně a byly potvrzené najednou, nebo (pokud některá z nich selže) žádná není potvrzena a celá transakce je vrácena zpět. Tento proces zajišťuje integritu výsledku ve zdroji dat.
Technologie OLE DB podporuje transakce pomocí tří následujících metod:
Vztah relací a transakcí
Jeden objekt zdroje dat můžete vytvořit jeden nebo více objektů relace, z nichž každý může být uvnitř nebo mimo rámec transakce v daném okamžiku.
Pokud relace nevstupuje do transakce, všechna činnost provedená v rámci této relace v úložišti dat je okamžitě potvrzena při každém volání metody. (Toto je někdy nazýváno jako režim automatického potvrzování nebo implicitní režim.)
Pokud relace vstupuje do transakce, všechny činnosti provedené v rámci dané relace v úložišti dat jsou součástí této transakce a jsou potvrzeny nebo zrušeny jako jeden celek. (Toto je někdy nazýváno jako režim ručního potvrzování.)
Podpora transakce je specifická pro poskytovatele. Pokud používáte poskytovatele, který podporuje transakce, objekt relace, který podporuje ITransaction a ITransactionLocal můžete zadat jednoduché (ne vnořené) transakce. Třída šablon technologie OLE DB CSession podporuje tato rozhraní a je doporučeným způsobem, jak implementovat podporu transakce v aplikaci Visual C++.
Začínání a ukončení transakce
Voláte metody StartTransaction, Commit a Abort v objektu sady řádků v příjemci.
Volání ITransactionLocal::StartTransaction spustí novou lokální transakci. Po spuštění transakce nebudou změny, které provedou následující operace, skutečně aplikovány na úložiště dat, dokud nepotvrdíte transakci.
Volání ITransaction::Commit nebo ITransaction::Abort ukončí transakci. Commit způsobí, že všechny změny v rámci rozsahu transakce budou aplikovány na úložiště dat. Abort způsobí, že všechny změny v rámci rozsahu transakce budou zrušeny a úložiště dat je ponecháno ve stavu, který byl před zahájením transakce.
Vnořené transakce
Vnořené transakce vznikají při spuštění nové lokální transakce v rámci aktivní transakce. Nová transakce je spuštěna jako vnořená transakce v aktuální transakci. Pokud je zde aktivní transakce v relaci a poskytovatel nepodporuje vnořené transakce, volání StartTransaction vrátí XACT_E_XTIONEXISTS.
Distribuované transakce
Distribuovaná transakce je transakcí, která aktualizuje distribuovaná data; tedy údaje o více než jednom síťovém počítačovém systému. Chcete-li použít transakce nad distribuovaným systémem, používejte rozhraní Microsoft .NET Framework, nikoli podporu transakce technologie OLE DB.