JetInit-Funktion

Gilt für: Windows | Windows Server

JetInit-Funktion

Die JetInit-Funktion versetzt die Datenbank-Engine in einen Zustand, in dem sie die Anwendungsverwendung von Datenbankdateien unterstützen kann. Die Engine muss bereits ordnungsgemäß für die Initialisierung mit JetSetSystemParameter konfiguriert sein. Die Datenbankabsturzwiederherstellung wird automatisch als Teil des Initialisierungsprozesses ausgeführt.

JET_ERR JET_API JetInit(
  __in_out_opt  JET_INSTANCE* pinstance
);

Parameter

Pinstance

Die für diesen Aufruf zu verwendende instance.

Für Windows 2000 wird dieser Parameter ignoriert und sollte immer NULL sein.

Bei Windows XP und höheren Versionen hängt die Verwendung dieses Parameters vom Betriebsmodus der Engine ab. Wenn die Engine im Legacymodus (Windows 2000-Kompatibilitätsmodus) ausgeführt wird, in dem nur eine instance unterstützt wird, kann dieser Parameter ENTWEDER NULL sein oder auf einen gültigen Ausgabepuffer festgelegt werden, der das globale instance-Handle zurückgibt, das als Nebeneffekt der Initialisierung erstellt wurde. Dieser Ausgabepuffer muss auf NULL oder JET_instanceNil festgelegt werden. Dieses instance-Handle kann dann an jede andere Funktion übergeben werden, die eine instance verwendet. Wenn die Engine im Modus mit mehreren instance ausgeführt wird, muss dieser Parameter auf einen gültigen Eingabepuffer festgelegt werden, der das instance Handle enthält, das von der JetCreateInstance-Funktion zurückgegeben wird, instance initialisiert wird.

Bemerkungen

Ein instance muss mit einem Aufruf von JetInit initialisiert werden, bevor er von einem anderen Als JetSetSystemParameter verwendet werden kann.

Ein instance wird durch einen Aufruf der JetTerm-Funktion zerstört, auch wenn diese instance nie mit JetInit initialisiert wurde. Ein instance ist die Einheit der Wiederherstellbarkeit für die Datenbank-Engine. Es steuert den Lebenszyklus aller Dateien, die zum Schutz der Integrität der Daten in einer Reihe von Datenbankdateien verwendet werden. Zu diesen Dateien gehören die Prüfpunktdatei und die Transaktionsprotokolldateien.

Die maximale Anzahl von Instanzen, die gleichzeitig erstellt werden können, wird von JET_paramMaxInstances gesteuert, die durch einen Aufruf von JetSetSystemParameter konfiguriert werden kann. Wenn die Datenbank-Engine zum ersten Mal initialisiert wird, erstellt JetInit einen anfänglichen Satz von Dateien, um diese instance zu unterstützen. Diese Dateien enthalten eine Prüfpunktdatei (mit dem Namen <JET_paramBaseName>. CHK), eine Gruppe von reservierten Transaktionsprotokolldateien (res1). LOG und RES2. LOG), eine anfängliche Transaktionsprotokolldatei (mit dem Namen <JET_paramBaseName>. LOG) und eine temporäre Datenbankdatei (benannt nach JET_paramTempPath). Wenn JET_paramRecovery auf "Aus" festgelegt ist, werden die Prüfpunktdatei und die Protokolldateien nicht erstellt. Wenn JET_paramMaxTemporaryTables auf 0 festgelegt ist, wird die temporäre Datenbankdatei nicht erstellt. Diese Dateien stellen den Speicherbedarf eines instance auf dem Datenträger dar und müssen sorgfältig verwaltet werden. Wenn diese Dateien einzeln oder in Bezug auf einander beschädigt sind, können die Daten, die in den Datenbanken gespeichert sind, die dem instance zugeordnet sind, verloren gehen.

Wenn die Datenbank-Engine mit einer vorhandenen Gruppe von Transaktionsprotokolldateien initialisiert wird, werden diese Dateien überprüft, um festzustellen, ob die vorherige Inkarnation des instance einen Absturz erlitten hat. Wenn ein Absturz erkannt wird, wird die Absturzwiederherstellung automatisch durchgeführt. Dieser Prozess rekonstruiert die Datenbanken, die während der vorherigen Inkarnation des Moduls an den instance angefügt wurden, und speichern die Änderungen wieder in den Datenbankdateien. Das Ergebnis sind Transaktionskonsistente Datenbanken. Dieser Prozess kann einige Zeit in Anspruch nehmen, wenn die Anzahl der Transaktionsprotokolldateien, die für die Datenbanken wiedergegeben werden sollen, groß ist.

Aufgrund der Tatsache, dass JetInit eine Absturzwiederherstellung durchführt, ist es möglich, dass im Falle eines Fehlers fast jeder Datenbank-Engine-Fehler zurückgegeben wird. In der Praxis fallen die meisten Fehler, die bei der Bereitstellung auftreten, in zwei Kategorien: Datenbeschädigung und Dateifehler. Datenbeschädigung manifestiert sich am häufigsten in den folgenden oder ähnlichen Fehlern:

  • JET_errReadVerifyFailure

  • JET_errLogFileCorrupt

  • JET_errCheckpointCorrupt

Diese Fehler werden fast immer durch Hardwareprobleme verursacht und können daher nicht vermieden werden. Dateifehler manifestieren sich am häufigsten in den folgenden oder ähnlichen Fehlern:

  • JET_errMissingLogFile

  • JET_errAttachedDatabaseMismatch

  • JET_errDatabaseSharingViolation

  • JET_errInvalidLogSequence

Wenn die Wiederherstellung für eine Reihe von Protokollen ausgeführt wird, für die nicht alle Datenbanken vorhanden sind (wodurch der Fehler unter normalen Umständen JET_errAttachedDatabaseMismatch zurückgegeben wird), und der Client die Wiederherstellung trotz fehlender Datenbanken fortsetzen möchte, kann die JET_ bitReplayIgnoreMissingDB verwendet werden, um die Wiederherstellung für die verfügbaren Datenbanken fortzusetzen. Diese Fehler können von der Anwendung verhindert werden. Die Anwendung muss darauf achten, das Repository dieser Dateien vor Manipulationen durch externe Kräfte wie den Benutzer oder andere Anwendungen zu schützen. Wenn die Anwendung eine instance vollständig zerstören möchte, müssen alle Dateien, die dem instance zugeordnet sind, gelöscht werden. Dazu gehören die Prüfpunktdatei, die Transaktionsprotokolldateien und alle Datenbankdateien, die an den instance angefügt sind.

Die JetInit-Funktion verhält sich in Bezug auf Datenbankdateien, die an den instance angefügt sind, zwischen Windows 2000 und höheren Versionen unterschiedlich.

Windows 2000: In Windows 2000 bleibt jede Datenbank, die während einer früheren Inkarnation dieses instance an den instance angefügt wurde, an den instance angefügt, nachdem JetInit erfolgreich abgeschlossen wurde. Es ist nicht erforderlich, JetAttachDatabase nach JetInit aufzurufen, um den späteren Datenbankzugriff zu sichern. Wenn die JetAttachDatabase-Funktion nach der JetInit-Funktion aufgerufen wird, wird die JET_wrnDatabaseAttached Warnung zurückgegeben. Diese Warnung gibt an, dass die Datenbankanlage beibehalten wurde und ignoriert werden kann.

Windows XP: In Windows XP und höheren Versionen werden alle Datenbanken automatisch von der instance von JetInit getrennt. Dies bedeutet, dass JetAttachDatabase in diesem Fall immer nach JetInit aufgerufen werden muss.

Jede Anwendung, die für die Ausführung unter Windows 2000 und späteren Versionen geschrieben wurde, muss immer JetAttachDatabase nach JetInit aufrufen. Wenn die Anwendung unter Windows 2000 ausgeführt wird, muss sie in einigen Fällen mit JET_wrnDatabaseAttached rechnen. Weitere Informationen finden Sie unter JetAttachDatabase .

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

Erweiterbare Speichermoduldateien
JET_ERR
JET_GRBIT
JET_INSTANCE
JET_paramMaxTemporaryTables
JET_paramRecovery
JetAttachDatabase
JetCreateInstance
JetInit3
JetSetSystemParameter