JetOSSnapshotFreeze-Funktion
Gilt für: Windows | Windows Server
JetOSSnapshotFreeze-Funktion
Die JetOSSnapshotFreeze-Funktion startet eine Momentaufnahme. Während der Momentaufnahme wird ausgeführt, kann keine Schreibaktivität des Moduls auf den Datenträger erfolgen.
Windows XP:JetOSSnapshotFreeze wird in Windows XP eingeführt.
JET_ERR JET_API JetOSSnapshotFreeze(
__in const JET_OSSNAPID snapId,
__out unsigned long* pcInstanceInfo,
__out JET_INSTANCE_INFO** paInstanceInfo,
__in const JET_GRBIT grbit
);
Parameter
snapId
Der Bezeichner der Momentaufnahme Sitzung.
pcInstanceInfo
Die Anzahl der Instanzen, die derzeit in der Engine ausgeführt werden, die Teil der Momentaufnahme-Sitzung sind.
paInstanceInfo
Ein Array von Strukturen, eine für jede ausgeführte instance, die Teil der Momentaufnahme-Sitzung ist und die instance und die Datenbanken beschreibt, die teil davon sind.
grbit
Die Optionen für diesen Aufruf. Dieser Parameter ist für die zukünftige Verwendung reserviert, und der einzige gültige Wert, der unterstützt wird, ist 0.
Rückgabewert
Diese Funktion gibt den JET_ERR-Datentyp 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_errInvalidParameter |
Die für die Ausgabeparameter bereitgestellten Zeiger sind NULL, die Momentaufnahme Sitzung ist ungültig, oder der grbit-Parameter ist ungültig. |
JET_errOSSnapshotInvalidSequence |
Die Momentaufnahme Sitzung befindet sich nicht im geeigneten Zustand, um ein Einfrieren zu starten (z. B. war ein vorheriges Einfrieren dieser Sitzung zuvor fehlgeschlagen). |
JET_errOSSnapshotNotAllowed |
Die Engine befindet sich nicht in einem Zustand, in dem ein Momentaufnahme ausgeführt werden kann. Mindestens eine Streamingsicherung wird bereits ausgeführt, oder eine oder mehrere Instanzen durchlaufen Wiederherstellungsschritte oder beenden sie. |
JET_errOSSnapshotInvalidSnapId |
Der Bezeichner für die Momentaufnahme Sitzung ist ungültig. |
JET_errOutOfMemory |
Die Funktion ist aufgrund einer Nicht-Speicherbedingung fehlgeschlagen. |
JET_errOutOfThreads |
Die Funktion ist fehlgeschlagen, weil ein neuer Thread, der das Einfrieren ausführt, nicht gestartet werden konnte. |
Wenn diese Funktion erfolgreich ist, werden keine Schreib-IOs für die Datenbankdateien oder für die Protokolldateien ausgegeben, die Teil von Instanzen sind, die eingefroren sind. Außerdem werden die instance Informationen ordnungsgemäß ausgefüllt und müssen später durch Aufrufen von JetFreeBuffer mit dem Zeiger auf das zurückgegebene instance Infoarray freigegeben werden.
Wenn diese Funktion ausfällt, wird die Engine normal weiter ausgeführt, wobei die IOs wie gewohnt auftreten. Es ist nicht erforderlich , JetOSSnapshotThaw aufzurufen, wenn das Einfrieren fehlschlägt. Außerdem werden die instance Informationen nicht ausgefüllt, sodass diese Ressource nicht freigegeben werden muss.
Bemerkungen
Während des Sperrzeitraums werden keine Schreib-IOs für die angefügten Datenbanken oder die Transaktionsprotokolle ausgegeben, obwohl möglicherweise Schreib-IOs für die temporären Datenbanken oder Streamingdateien ausgegeben werden.
Der Zustand, in dem sich die Datenbanken und die Protokolldateien während des Einfrierens befinden (der Zustand, in dem sich die Dateien in einem Volumemomentaufnahmeimage befinden würden), ist so, dass eine normale Wiederherstellung möglich ist, wenn diese Dateien später wiederhergestellt werden.
Da es während des Einfrierungszeitraums keine Schreibvorgänge gibt, können normale API-Aufrufe in der Engine für dieses Intervall blockiert werden. Die Clientanwendung muss in der Lage sein, API-Aufrufe zu verarbeiten, die bei einem Einfrieren länger dauern können als normal.
Aufgrund der oben beschriebenen möglichen Auswirkungen gibt es ein internes Timeout, nach dem die Momentaufnahme Sitzung die Einfrierungsphase beendet, auch wenn die APIs, die das Tauwetter oder den Abbruch ausführen, nicht aufgerufen wurden. Der Wert des Timeouts kann mithilfe des JET_paramOSSnapshotTimeout Systemparameters geändert werden. Beachten Sie, dass das typische Gefrierintervall im Bereich von 10 Sekunden liegt, wobei das Standardtimeout etwa 60 Sekunden beträgt.
Anforderungen
Anforderung | Wert |
---|---|
Client |
Erfordert Windows Vista oder Windows XP. |
Server |
Erfordert Windows Server 2008 oder Windows Server 2003. |
Kopfzeile |
Deklariert in Esent.h. |
Bibliothek |
Verwenden Sie ESENT.lib. |
DLL |
Erfordert ESENT.dll. |
Unicode |
Implementiert als JetOSSnapshotFreezeW (Unicode) und JetOSSnapshotFreezeA (ANSI). |
Weitere Informationen
JET_ERR
JET_INSTANCE_INFO
JET_OSSNAPID
JetOSSnapshotAbort
JetOSSnapshotPrepare
JetOSSnapshotPrepareInstance
JetOSSnapshotThaw