JetExternalRestore-Funktion
Gilt für: Windows | Windows Server
JetExternalRestore-Funktion
Die JetExternalRestore-Funktion stellt eine externe Sicherung wieder her, die mit den externen Sicherungs-APIs erstellt wurde, und gibt einen Bereich von Protokolldateinummern an, die während des Wiederherstellungsvorgangs wiedergegeben werden sollen. Dies wird als harte Wiederherstellung bezeichnet, die ähnlich ist, sich aber von der von der JetInit-Funktion durchgeführten weichen Wiederherstellung unterscheidet.
JET_ERR JET_API JetExternalRestore(
__in JET_PSTR szCheckpointFilePath,
__in JET_PSTR szLogPath,
__in_opt JET_RSTMAP* rgrstmap,
__in long crstfilemap,
__in JET_PSTR szBackupLogPath,
__in long genLow,
__in long genHigh,
__in JET_PFNSTATUS pfn
);
Parameter
szCheckpointFilePath
Der Pfad für die Prüfpunktdatei, die während der Wiederherstellung verwendet werden soll, wenn szTargetInstanceCheckpointPath nicht angegeben ist oder bereits eine aktive oder ausgeführte instance enthält.
szLogPath
Der Pfad oder das Verzeichnis für die Protokolle für die letzte Phase (Rückgängig) der Wiederherstellung und möglicherweise für die Roll forward-Protokolle. Dieser Pfad kann mit szBackupLogPath identisch sein.
rgrstmap
Dies ist ein Array von JET_RSTMAP Strukturen. Dies ist eine Zuordnung alter und neuer Datenbankpfade oder Dateinamen. Dies wird verwendet, da die Datenbanken möglicherweise an einem anderen Speicherort als dem Speicherort wiederhergestellt werden müssen, von dem aus sie gesichert wurden. Wenn mehrere Datenbanken an einen einzelnen Protokollierungssatz angefügt sind, kann die Wiederherstellungszuordnung eine Teilmenge der wiederherzustellenden Datenbanken angeben.
crstfilemap
Die Anzahl der Einträge im rgrstmap-Arrayparameter .
szBackupLogPath
Der Pfad zu dem Verzeichnis, in dem die Protokolldateien wiederhergestellt werden. Dies sind die Protokolle, die während der externen Sicherungssequenz gelesen wurden. Dieser Pfad kann mit dem szLogPath identisch sein.
genLow
Die niedrigste Protokolldateinummer, die von szBackupLogPath wiedergegeben werden soll. Die vollständige Genauigkeit eines nicht signierten Long-Werts sollte beibehalten werden, aber in aktuellen Versionen des Moduls ist diese Zahl eine hexadezimale Zahl im Bereich von 0x00000 bis 0xFFFFF. Dies kann sich in zukünftigen Versionen ändern.
genHigh
Die höchste Protokolldateinummer, die von szBackupLogPath wiedergegeben werden soll. Die vollständige Genauigkeit eines nicht signierten Long-Werts sollte beibehalten werden, aber in den aktuellen Versionen des Moduls ist diese Zahl eine hexadezimale Zahl im Bereich von 0x00000 bis 0xFFFFF. Dies kann sich in zukünftigen Versionen ändern.
pfn
Der status Rückruf, um den Fortschritt der Wiederherstellung zu melden.
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_errOutOfMemory |
Der Vorgang ist fehlgeschlagen, da nicht genügend Arbeitsspeicher zugewiesen werden konnte, um ihn abzuschließen. |
JET_errInvalidParameter |
Einer der bereitgestellten Parameter enthielt einen unerwarteten Wert oder einen Wert, der in Kombination mit dem Wert eines anderen Parameters nicht sinnvoll war. Dies kann für JetExternalRestore usw. auftreten, wenn szTargetCheckpointPath und szTargetInstanceLogPath entweder nicht beide angegeben oder nicht beide nicht angegeben sind. Das heißt, sie müssen übereinstimmen und beide angegeben oder beide nicht angegeben sein. |
JET_errDatabaseCorrupted |
Dies gibt an, dass die Datenbank beschädigt oder eine nicht erkannte Datei war. |
JET_errFileNotFound |
Der Vorgang ist fehlgeschlagen, da die angeforderte Datei nicht geöffnet werden konnte, da sie im angegebenen Pfad nicht gefunden werden konnte. |
JET_errInvalidPath |
Fehler beim Vorgang, weil der angegebene Pfad nicht gefunden werden konnte. |
JET_errRestoreOfNonBackupDatabase |
Dieser Fehler wird zurückgegeben, wenn die während der Wiederherstellung angegebene Datenbankdatei keine Datenbank ist, die mit einer externen Sicherung gesichert wurde. |
JET_errStartingRestoreLogTooHigh |
Dieser Fehler wird zurückgegeben, wenn eine der Protokolldateien in szBackupLogPath eine Protokollgenerierung unterhalb der durch genLow oder pLogInfo.ulGenLow angegebenen Protokollgenerierung aufweist. |
JET_errEndingRestoreLogTooLow |
Dieser Fehler wird zurückgegeben, wenn eine der Protokolldateien im szBackupLogPath über eine Protokollgenerierung verfügt, die in genHigh oder pLogInfo.ulGenHigh angegeben ist. |
JET_errBadRestoreTargetInstance |
Der angegebene szTargetInstanceLogPath gehört nicht zu einer initialisierten instance. Dieser Fehler wird nur in Windows XP und höher zurückgegeben. |
JET_errRunningInOneInstanceMode |
Die Datenbank-Engine kann keine externe Wiederherstellung oder harte Wiederherstellung im Einzelmodus instance ausführen. Dieser Fehler wird nur in Windows XP und höher zurückgegeben. |
Bei Erfolg werden alle Datenbanken aus der rgrstmap vollständig wiederhergestellt und befinden sich in einem sauber oder konsistenten Zustand. An diesem Punkt kann die Datenbank wieder in eine vorhandene instance eingebunden werden.
Bei einem Fehler konnte die Engine die Datenbank nicht wiederherstellen. Die Datenbank befindet sich in einem ungültigen Zustand, und um die harte Wiederherstellung wiederholen zu können, muss die gesamte Datenbank erneut wiederhergestellt werden. In der Regel ist die Ursache einer solchen Situation datenträger- oder protokollbeschädigung, eine andere Form von Protokollfehlern oder ein nicht fortlaufender Protokollsatz.
Bemerkungen
Um zu verstehen, wie eine "harte" Wiederherstellung funktioniert, müssen Sie verstehen, dass es drei Wiederherstellungsphasen gibt, und die zweite Phase kann zwei Teile haben. In Phase I sind Protokolle erforderlich, um eine gesicherte Datenbank auf Konsistenz zu bringen (oder eine erste Gruppe von inkrementellen Protokollen kann verwendet werden). In Phase II werden alle zusätzlichen verfügbaren Roll forward-Protokolle verwendet, um die Datenbank konsistent zu machen. Es gibt auch eine Wiedergabe der zusätzlichen Roll forward-Protokolle. Phase III ist die Rückgängig-Phase der Wiederherstellung.
Phase I: Die Wiedergabe des Datensatzes, der wiederhergestellt werden muss, damit die Datenbank in einen konsistenten Zustand (oder einen anfänglichen Satz von Protokolldateien) versetzt wird, wird ausgeführt. Im Grunde ist dies die Wiedergabe der Protokolldateien, die für die wiederhergestellten Datenbanken nicht optional sind. Wenn Protokolle aus diesem Protokollbereich fehlen, schlägt die Wiederherstellung fehl. Diese Protokolle sollten in das verzeichnis eingefügt werden, das im szBackupLogPath-Parameter angegeben ist.
Phase II: Optional kann es einige Sätze von Protokolldateien geben, die Roll forward-Protokolldateien sind, die aus inkrementellen oder differenziellen Sicherungen und aus den Protokolldateien eines aktiven instance stammen. Bei Protokolldateien aus inkrementellen oder differenziellen Sicherungen können die Protokolldateien in den Verzeichnissen platziert werden, die in den Parametern szBackupLogPath oder szTargetInstanceLogPath angegeben sind, wobei ersteres das empfohlene Verzeichnis ist. Die Protokolle, die für die Roll Forward-Phase (Phase II) verwendet werden, sollten aus der gleichen Reihe von Protokollen stammen, die während Phase I wiedergegeben werden, und sollten kontinuierlich inkrementierende Protokollnummern ohne Lücken aus den Phase-I-Protokollen aufweisen. Um eine Datenbank wiederzugeben, die mit den Protokolldateien, die derzeit von einem aktiven instance verwendet werden, vollständig auf dem neuesten Stand ist, müssen die Parameter szTargetInstanceLogPath und szTargetInstanceCheckpointPath angegeben werden. Dies kann auch erfolgen, wenn andere Datenbanken an diesen Protokollsatz angefügt sind.
Phase III: In der letzten Phase der Wiederherstellung werden alle nicht festgeschriebenen Transaktionen zurückgesetzt, was das Generieren neuer Protokolldateien und das Aktualisieren der Prüfpunktdatei erfordert. Diese Phase wird manchmal als "Rückgängig" bezeichnet. Der in dieser Phase zu verwendende Prüfpunktdateipfad ist der Pfad, der dem Protokollspeicherort der Phase III entspricht. Das heißt, wenn szLogPath für Phase III verwendet wird, wird szCheckpointFilePath verwendet, wenn szTargetInstanceLogPath für Phase III der Wiederherstellung szTargetInstanceCheckpointPath verwendet wird.
Verwenden Sie dieses Flussdiagramm, um zu verstehen, wie die Pfade funktionieren:
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. |
Unicode |
Implementiert als JetExternalRestoreW (Unicode) und JetExternalRestoreA (ANSI). |
Weitere Informationen
JET_ERR
JET_PFNSTATUS
JET_RSTMAP
JET_LOGINFO
JetBeginExternalBackup
JetInit