Freigeben über


Unterstützen von Transaktionen in OLE DB

Eine Transaktion ist eine Möglichkeit zum Gruppieren oder Batchen einer Reihe von Aktualisierungen an einer Datenquelle, sodass entweder alle erfolgreich sind und gleichzeitig zugesichert werden oder (wenn eine dieser Vorgänge fehlschlägt) kein Commit ausgeführt wird und die gesamte Transaktion zurückgesetzt wird. Dieser Prozess stellt die Integrität des Ergebnisses für die Datenquelle sicher.

OLE DB unterstützt Transaktionen mit den folgenden drei Methoden:

Beziehung zwischen Sitzungen und Transaktionen

Ein einzelnes Datenquellenobjekt kann ein oder mehrere Sitzungsobjekte erstellen, von denen jedes innerhalb oder außerhalb des Bereichs einer Transaktion zu einem bestimmten Zeitpunkt sein kann.

Wenn eine Sitzung keine Transaktion eingibt, werden alle Aufgaben innerhalb dieser Sitzung im Datenspeicher für jeden Methodenaufruf sofort übernommen. (Dies wird manchmal als AutoCommit-Modus oder impliziter Modus bezeichnet.)

Wenn eine Sitzung eine Transaktion eingibt, ist die gesamte In dieser Sitzung im Datenspeicher erledigte Arbeit Teil dieser Transaktion und wird als einzelne Einheit zugesichert oder abgebrochen. (Dies wird manchmal als manueller Commit-Modus bezeichnet.)

Die Transaktionsunterstützung ist anbieterspezifisch. Wenn der von Ihnen verwendete Anbieter Transaktionen unterstützt, unterstützt ein Sitzungsobjekt, das eine (nicht geschachtelte) Transaktion unterstützt ITransaction und ITransactionLocal eingeben kann. Die OLE DB Templates-Klasse CSession unterstützt diese Schnittstellen und ist die empfohlene Methode zum Implementieren der Transaktionsunterstützung in Visual C++.

Starten und Beenden der Transaktion

Sie rufen die StartTransactionMethoden Commitund Methoden Abort des Rowset-Objekts im Consumer auf.

Beim Aufrufen ITransactionLocal::StartTransaction wird eine neue lokale Transaktion gestartet. Wenn Sie die Transaktion starten, werden alle von späteren Vorgängen vorgeschriebenen Änderungen erst auf den Datenspeicher angewendet, wenn Sie einen Commit für die Transaktion ausführen.

Die Transaktion wird aufgerufen ITransaction::Commit oder ITransaction::Abort beendet. Commit bewirkt, dass alle Änderungen im Rahmen der Transaktion auf den Datenspeicher angewendet werden. Abort bewirkt, dass alle Änderungen innerhalb des Gültigkeitsbereichs der Transaktion abgebrochen werden und der Datenspeicher in dem Zustand verbleibt, den sie vor dem Start der Transaktion hatte.

Geschachtelte Transaktionen

Eine geschachtelte Transaktion tritt auf, wenn Sie eine neue lokale Transaktion starten, wenn in der Sitzung bereits eine aktive Transaktion vorhanden ist. Die neue Transaktion wird als geschachtelte Transaktion unterhalb der aktuellen Transaktion gestartet. Wenn der Anbieter keine geschachtelten Transaktionen unterstützt, gibt das Aufrufen StartTransaction , wenn bereits eine aktive Transaktion für die Sitzung vorhanden ist, XACT_E_XTIONEXISTS zurück.

Verteilte Transaktionen

Eine verteilte Transaktion ist eine Transaktion, die verteilte Daten aktualisiert; d. h. Daten auf mehr als einem vernetzten Computersystem. Wenn Sie Transaktionen über ein verteiltes System unterstützen möchten, sollten Sie .NET Framework anstelle der OLE DB-Transaktionsunterstützung verwenden.

Siehe auch

Verwenden von Zugriffsmethoden