JetCommitTransaction2-Funktion

Gilt für: Windows | Windows Server

Die JetCommitTransaction2-Funktion committet die Änderungen, die während des aktuellen Speicherpunkts an den Zustand der Datenbank vorgenommen wurden, und migriert sie zum vorherigen Speicherpunkt. Wenn für den äußersten Speicherpunkt ein Commit ausgeführt wird, werden die während dieses Speicherpunkts vorgenommenen Änderungen in den Zustand der Datenbank committet, und die Sitzung beendet die Transaktion.

Die JetCommitTransaction2-Funktion wurde im Windows 8 Betriebssystem eingeführt.

JET_ERR JET_API JetCommitTransaction2(
  __in          JET_SESID sesid,
  __in          JET_GRBIT grbit,
  __in          DWORD cmsecDurableCommit,
  __out         JET_COMMIT_ID pCommitID
);

Parameter

sesid

Die Sitzung, die für diesen Aufruf verwendet werden soll.

grbit

Eine Gruppe von Bits, die null oder mehr der in der folgenden Tabelle aufgeführten Werte angeben.

Wert

Bedeutung

JET_bitCommitLazyFlush

Die Transaktion wird normal committet, aber diese API wartet nicht, bis die Transaktion in die Transaktionsprotokolldatei geleert wird, bevor sie an den Aufrufer zurückkehrt. Dadurch wird die Dauer eines Commitvorgangs auf Kosten der Dauerhaftigkeit drastisch reduziert. Jede Transaktion, die vor einem Absturz nicht in das Protokoll geleert wird, wird während der Absturzwiederherstellung während des nächsten Aufrufs der JetInit-Funktion automatisch abgebrochen.

Wenn JET_bitWaitLastLevel0Commit oder JET_bitWaitAllLevel0Commit angegeben sind, wird diese Option ignoriert.

Wenn dieser Aufruf von JetCommitTransaction2 nicht mit dem ersten Aufruf der JetBeginTransaction-Funktion für diese Sitzung übereinstimmt, wird diese Option ignoriert. Dies liegt daran, dass die letzte Aktion, die auf dem äußersten Speicherpunkt auftritt, der bestimmende Faktor ist, ob die gesamte Transaktion tatsächlich auf den Datenträger committet wird.

JET_bitWaitAllLevel0Commit

Alle Transaktionen, die zuvor von einer Sitzung committet wurden und noch nicht in die Transaktionsprotokolldatei geleert wurden, werden sofort geleert. Diese API wartet, bis die Transaktionen geleert wurden, bevor sie an den Aufrufer zurückgegeben wird.

Diese Option kann auch verwendet werden, wenn sich die Sitzung derzeit nicht in einer Transaktion befindet.

Diese Option kann nicht in Kombination mit anderen Optionen verwendet werden.

Diese Option ist in Versionen des Windows Server-Betriebssystems ab Windows Server 2003 verfügbar.

JET_bitWaitLastLevel0Commit

Wenn die Sitzung zuvor ein Commit für Transaktionen ausgeführt hat und diese noch nicht in die Transaktionsprotokolldatei geleert wurden, sollten sie sofort geleert werden. Diese API wartet, bis die Transaktionen geleert wurden, bevor sie an den Aufrufer zurückgegeben wird. Dies ist nützlich, wenn die Anwendung zuvor mehrere Transaktionen mithilfe von JET_bitCommitLazyFlush committet hat und jetzt alle Transaktionen auf den Datenträger leeren möchte.

Diese Option kann auch verwendet werden, wenn sich die Sitzung derzeit nicht in einer Transaktion befindet.

Diese Option kann nicht in Kombination mit anderen Optionen verwendet werden.

cmsecDurableCommit

Die Dauer des Commits für eine verzögerte Transaktion.

pCommitID

Die Commit-ID, die diesem Commitdatensatz zugeordnet ist.

Rückgabewert

Diese Funktion gibt den Datentyp JET_ERR mit einem der in der folgenden Tabelle aufgeführten Rückgabecodes zurück. Weitere Informationen zu möglichen Ese-Fehlern (Extensible Storage Engine) finden Sie unter Fehler der erweiterbaren Speicher-Engine und Fehlerbehandlungsparameter.

Rückgabecode

Beschreibung

JET_errSuccess

Der Vorgang wurde erfolgreich abgeschlossen.

JET_errClientRequestToStopJetService

Es ist nicht möglich, den Vorgang abzuschließen, da alle Aktivitäten auf dem instance, die der Sitzung zugeordnet sind, aufgrund eines Aufrufs der JetStopService-Funktion beendet wurden.

JET_errInstanceUnavailable

Es ist nicht möglich, den Vorgang abzuschließen, da für die instance, die der Sitzung zugeordnet ist, ein schwerwiegender Fehler aufgetreten ist, der erfordert, dass der Zugriff auf alle Daten widerrufen wird, um die Integrität dieser Daten zu schützen.

Dieser Fehler wird nur von Versionen des Windows-Betriebssystems zurückgegeben, die mit Windows XP beginnen.

JET_errInvalidgrbit

Eine der angeforderten Optionen war ungültig oder nicht implementiert. Dieser Fehler wird von der JetCommitTransaction2-Funktion zurückgegeben, wenn Folgendes auftritt:

  • Ein unzulässiges Grbit wird angegeben.

  • JET_bitWaitLastLevel0Commit wurde in Kombination mit einem anderen Grbit angegeben.

  • JET_bitWaitAllLevel0Commit wurde in Kombination mit einem anderen Grbit angegeben.

JET_errNotInitialized

Es ist nicht möglich, den Vorgang abzuschließen, da die der Sitzung zugeordnete instance noch nicht initialisiert wurde.

JET_errNotInTransaction

Der Vorgang ist fehlgeschlagen, weil sich die angegebene Sitzung nicht in einer Transaktion befindet.

JET_errRestoreInProgress

Es ist nicht möglich, den Vorgang abzuschließen, da ein Wiederherstellungsvorgang für die instance ausgeführt wird, die der Sitzung zugeordnet ist.

JET_errSessionSharingViolation

Dieselbe Sitzung kann nicht für mehrere Threads gleichzeitig verwendet werden.

Dieser Fehler wird nur von Versionen des Windows-Betriebssystems zurückgegeben, die mit Windows XP beginnen.

JET_errTermInProgress

Es ist nicht möglich, den Vorgang abzuschließen, da die der Sitzung zugeordnete instance heruntergefahren wird.

Bei Erfolg werden alle Änderungen, die während des aktuellen Speicherpunkts für die angegebene Sitzung an der Datenbank vorgenommen wurden, committet, und dieser Speicherpunkt wird beendet. Wenn der letzte Speicherpunkt für die Sitzung beendet wurde, wird die Transaktion optional in die Transaktionsprotokolldatei geleert, und die Sitzung beendet die Transaktion.

Bei einem Fehler bleibt der Transaktionszustand der Sitzung unverändert. Es wird keine Änderung des Datenbankzustands vorgenommen. Die Anwendung sollte die JetRollback-Funktion aufrufen, um die Transaktion abzubrechen.

Bemerkungen

Es muss ein Aufruf von JetCommitTransaction2 oder JetRollback vorhanden sein, um jeden Aufruf von JetBeginTransaction für eine bestimmte Sitzung abzugleichen.

Anforderungen

Anforderung Wert

Client

Erfordert Windows 8.

Server

Erfordert Windows Server 2012.

Kopfzeile

Deklariert in Esent.h.

Bibliothek

Verwenden Sie ESENT.lib.

DLL

Erfordert ESENT.dll.

Siehe auch

JET_ERR
JET_GRBIT
JET_SESID
JetBeginTransaction
JetCommitTransaction
JetRollback
JetStopService