JetCommitTransaction-Funktion

Gilt für: Windows | Windows Server

JetCommitTransaction-Funktion

Die JetCommitTransaction-Funktion committet die Änderungen, die während des aktuellen Speicherpunkts am 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.

    JET_ERR JET_API JetCommitTransaction(
      __in          JET_SESID sesid,
      __in          JET_GRBIT grbit
    );

Parameter

sesid

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

grbit

Eine Gruppe von Bits, die null oder mehr der folgenden Optionen angibt.

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 JetInit-Aufrufs automatisch abgebrochen.

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

Wenn dieser Aufruf von JetCommitTransaction nicht mit dem ersten Aufruf von JetBeginTransaction 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 nur 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.

Rückgabewert

Diese Funktion gibt den Datentyp JET_ERR mit einem der folgenden Rückgabecodes zurück. Weitere Informationen zu möglichen ESE-Fehlern finden Sie unter Erweiterbare Speichermodulfehler 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 der instance, die der Sitzung zugeordnet sind, aufgrund eines Aufrufs von JetStopService 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 Windows XP und späteren Versionen zurückgegeben.

JET_errInvalidgrbit

Eine der angeforderten Optionen war ungültig oder nicht implementiert. Dieser Fehler wird von JetCommitTransaction zurückgegeben, wenn:

  • 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 Windows XP und späteren Versionen zurückgegeben.

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 JetRollback aufrufen, um die Transaktion abzubrechen.

Bemerkungen

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

Anforderungen

Anforderung Wert

Client

Erfordert Windows Vista, Windows XP oder Windows 2000 Professional.

Server

Erfordert Windows Server 2008, Windows Server 2003 oder Windows 2000 Server.

Kopfzeile

Deklariert in Esent.h.

Bibliothek

Verwenden Sie ESENT.lib.

DLL

Erfordert ESENT.dll.

Weitere Informationen

JET_ERR
JET_GRBIT
JET_SESID
JetBeginTransaction
JetCommitTransaction
JetRollback
JetStopService