Freigeben über


JetAttachDatabase-Funktion

Letzte Änderung: Freitag, 27. Februar 2015

Gilt für: Windows | Windows Server

JetAttachDatabase-Funktion

Die Funktion JetAttachDatabase fügt eine Datenbankdatei für die Verwendung mit einer Datenbankinstanz. Um die Datenbank verwenden, müssen sie anschließend mit JetOpenDatabasegeöffnet werden.

JET_ERR JET_API JetAttachDatabase(
  __in          JET_SESID sesid,
  __in          const tchar* szFilename,
  __in          JET_GRBIT grbit
);

Parameter

sesid

Der Kontext, für den API-Aufruf zu verwendenden Datenbank Sitzung.

szFilename

Der Name der Datenbank anfügen.

JET_errInvalidGrbit

Eine Gruppe von Bits an, die NULL oder mehrere der folgenden Optionen angeben.

Wert

Bedeutung

JET_bitDbDeleteCorruptIndexes

Wenn JET_paramEnableIndexChecking festgelegt wurde, werden alle Indizes über Unicode-Daten gelöscht. Finden Sie im Abschnitt Weitere Informationen.

JET_bitDbDeleteUnicodeIndexes

Alle Indizes über Unicode-Daten werden unabhängig von der Einstellung der JET_paramEnableIndexCheckinggelöscht. Finden Sie im Abschnitt Weitere Informationen.

JET_bitDbUpgrade

Veraltet. Nicht verwenden.

JET_bitDbReadOnly

Verhindert, dass Änderungen an der Datenbank.

Return Value

Diese Funktion gibt den Datentyp JET_ERR mit einem der folgenden Rückgabecodes. Weitere Informationen zu den möglichen ESE-Fehlern finden Sie unter Extensible Storage Engine-Fehlern und Fehler behandeln von Parametern.

Rückgabecode

Beschreibung

JET_errSuccess

Der Vorgang wurde erfolgreich abgeschlossen.

JET_errBackupInProgress

Anfügen einer Datenbank ist während einer Sicherung nicht zulässig.

JET_errDatabaseFileReadOnly

Die Datenbankdatei durch SzFilename angegebenen muss geschrieben werden. Das Read-Only-Attribut muss nicht festgelegt werden, und der laufenden Prozess muss über ausreichende Berechtigungen zum Schreiben in die Datei.

JET_errDatabaseInUse

Die Datenbankdatei ist bereits von einem anderen Prozess geöffnet.

JET_errDatabaseInvalidPath

In SzFilenamewurde ein ungültiger Pfad angegeben. SzFilename muss ungleich NULL sein und auf einen gültigen Pfad verweisen.

JET_errDatabaseSharingViolation

Die Datenbankdatei wurde bereits von einer anderen Sitzung zugeordnet.

JET_errFileAccessDenied

Das Datenbankmodul kann nicht die Datenbankdatei öffnen. Die Datei wird möglicherweise von einem anderen Prozess verwenden oder der Anrufer möglicherweise nicht über ausreichende Berechtigungen zum Öffnen der Datei.

JET_errFileNotFound

Die im SzFilename angegebene Datei ist nicht vorhanden.

JET_errPrimaryIndexCorrupted

Es ist ein Fehler mit der Primärindex. Dies kann aus physische Beschädigung (beispielsweise Datenträger oder im Speicher eine Beschädigung) sein. Es kann auch beim letzten Anfügen einer Datenbank auf einem älteren Betriebssystem geändert und der Primärindex über eine Spalte mit Unicode-Daten ist zurückgegeben werden. Über Unicode-Daten finden Sie unter den Hinweisen für Weitere Informationen zu Indizes.

JET_errSecondaryIndexCorrupted

Es ist ein Fehler mit einem sekundären Index. Dies kann aus physische Beschädigung (beispielsweise Datenträger oder im Speicher eine Beschädigung) sein. Es kann auch beim Anfügen einer Datenbank zuletzt am einem älteren Betriebssystem geändert und ein sekundärer Index über eine Spalte mit Unicode-Daten zurückgegeben werden. Über Unicode-Daten finden Sie unter den Hinweisen für Weitere Informationen zu Indizes. Sekundäre Indizes werden vollständig neu erstellt, wenn eine Datenbank mit einer offline-Dienstprogramm mithilfe des folgenden Befehls Defragmentierung ist: Esentutl d.

JET_errTooManyAttachedDatabases

Nur eine begrenzte Anzahl von Datenbanken kann pro Instanz angefügt werden soll. Der Grenzwert ist zurzeit sieben Datenbanken pro Instanz.

JET_wrnDatabaseAttached

Eine ein nicht schwerwiegender Warnung gibt an, dass die Datenbankdatei bereits von dieser Sitzung zugeordnet wurde.

Anmerkungen

Das Aufrufen JetAttachDatabase entspricht dem Aufrufen der JetAttachDatabase2 und dem Wert 0 (null), was bedeutet, dass es gibt keine Beschränkung, für den CpgDatabaseSizeMax -Parameter übergeben.

Anfügen einer Datenbank schreibgeschützt (d. h., wenn JET_bitDbReadOnly im JET_errInvalidGrbit -Parameter nicht angegeben wurde), öffnen Sie die Datei exklusiv auf Betriebssystemebene. Kein anderer Prozess werden die Lage, öffnen Sie die Datei. Es ist möglich, dass mehrere Prozesse zum Anfügen einer einzelnen Datenbank im schreibgeschützten Modus geöffnet werden.

Die Datenbankdatei ist unter Verwendung JetDetachDatabase ist oder JetDetachDatabase2getrennt.

Überprüfung der Index Parameter

Verschiedene Versionen von Windows normalisieren Unicode-Text auf unterschiedliche Weise. Dass bedeutet, dass Indizes in einer Version von Windows erstellt funktioniert nicht auf andere Versionen.

Vor Windows Server 2003 wurde bei der Version des Betriebssystems geändert (einschließlich der Installation von Service Pack) jeder Index über Unicode-Daten möglicherweise beschädigt.

In Windows Server 2003 und höher erstellte Indizes werden mit der Version von Unicode-Normalisierung gekennzeichnet, mit denen sie erstellt wurden. Ältere Indizes enthalten keine Versionsinformationen. Die meisten Unicode-Normalisierung Änderungen des Hinzufügens von neuer Zeichen bestehen, Codepunkte, die zuvor nicht definierten Waren werden nun definiert und Normalisieren unterschiedlich. Folglich Wenn binäre Daten in einer Spalte Unicode gespeichert ist, wird es unterschiedlich normalisieren neuen Codepunkte definiert sind.

Im Windows Server 2003 verfolgt die ESE-Datenbank-Engine Unicode Indexeinträge, die nicht definiert Code Punkt enthalten. Diese können verwendet werden, um einen Index zu beheben, wenn der Satz von definierten Unicode Änderungen Zeichen.

Diese Parameter steuern, was geschieht, wenn der ESE-Datenbank-Engine an eine Datenbank angefügt wird, die unter einem anderen Build des Betriebssystems zuletzt verwendet wurde. Version des Betriebssystems ist in der Datenbank-Kopfzeile enthalten.

Wenn JET_paramEnableIndexChecking auf TRUEfestgelegt ist, und die Datenbank möglicherweise beschädigt Indizes enthält:

  • JetAttachDatabase löscht die Indizes möglicherweise beschädigt, wenn JET_errInvalidGrbit JET_bitDbDeleteCorruptIndexes enthält

  • JetAttachDatabasegibt einen Fehler zurück, wenn JET_errInvalidGrbit enthält keine JET_bitDbDeleteCorruptIndexes und Indizes, die Löschung erforderlich sind.

Wenn JET_paramEnableIndexChecking auf FALSEfestgelegt ist:

  • JetAttachDatabase potenziell beschädigte Indizes ignoriert und JET_errSuccess (vorausgesetzt, dass keine anderen Fehler) zurückzugeben.

WindowsServer 2003 und höher: Wenn JET_paramEnableIndexChecking nicht zurückgesetzt wurde, werden die internen Fixup-Tabelle für Indexeinträge Fixup verwendet. Dies kann möglicherweise nicht alle Beschädigungen des Index beheben ist jedoch für die Anwendung transparent.

Wenn die Datenbank, als schreibgeschützt angefügt wurde werden nicht der Index mit fester oder gelöscht. In diesem Fall wird die API stattdessen einen Fehler, wie JET_errPrimaryIndexCorrupted oder JET_errPrimaryIndexCorrupted zurück.

Voraussetzungen

-Client,

Erfordert Windows Vista, Windows XP oder Windows 2000 Professional.

Server

WindowsServer 2008, WindowsServer 2003 oder Windows 2000 Server benötigt.

Kopfzeile

In Esent.h deklariert.

Library

Verwenden Sie ESENT.lib.

DLL

Erfordert "ESENT.dll".

Unicode

Implementiert als JetAddColumnW (Unicode) und JetAddColumnA (ANSI).

Siehe auch

Extensible Storage Engine Dateien
JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JetAttachDatabase2
JetCreateDatabase
JetDetachDatabase ist
JetDetachDatabase2
JetOpenDatabase
JetSetSystemParameter