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:
|
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