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