JetCompact-Funktion
Gilt für: Windows | Windows Server
JetCompact-Funktion
Die JetCompact-Funktion erstellt eine Kopie einer vorhandenen Datenbank. Die Kopie wird in einen Zustand komprimiert, der optimal für die Verwendung geeignet ist. Daten in den kopierten Daten werden gemäß den für die Indexerstellung ausgewählten Maßnahmen verpackt. Auf diese Weise können komprimierte Daten so dicht wie möglich gespeichert werden. Alternativ können komprimierte Daten Speicherplatz für nachfolgende Datensatzwachstums- oder Indexeinfügeungen reservieren.
JET_ERR JET_API JetCompact(
__in JET_SESID sesid,
__in JET_PCSTR szDatabaseSrc,
__in JET_PCSTR szDatabaseDest,
__in JET_PFNSTATUS pfnStatus,
__in_opt JET_CONVERT* pconvert,
__in JET_GRBIT grbit
);
Parameter
sesid
Die Sitzung, die für diesen Aufruf verwendet werden soll.
szDatabaseSrc
Die Quelldatenbank, die komprimiert wird.
szDatabaseDest
Der Name, der für die komprimierte Datenbank verwendet werden soll.
pfnStatus
Eine Rückruffunktion, die regelmäßig über den Datenbankkomprimierenvorgang aufgerufen werden kann, um den Fortschritt zu melden.
pconvert
Ein Zeiger, der verwendet wird, um eine alternative ESE-DLL festzulegen, die verwendet werden kann, um die Quelldatenbank zu lesen und optionale Parameter für einen JetCompact-Vorgang bereitzustellen, der eine Datenbank aus einem früheren versionsformat konvertiert. Dieses Feature wurde in Windows Server 2003 eingestellt.
grbit
Eine Gruppe von Bits, die null oder mehr der folgenden Optionen angeben.
Wert |
Bedeutung |
---|---|
JET_bitCompactRepair |
Wird verwendet, wenn die Quelldatenbank beschädigt ist. Es ermöglicht eine ganze Reihe neuer Verhaltensweisen, die so viel Daten wie möglich aus der Quelldatenbank retten möchten. JetCompact mit diesem Optionssatz kann JET_errSuccess zurückgeben, aber nicht alle daten kopieren, die in der Quelldatenbank erstellt wurden. Daten, die in beschädigten Teilen der Quelldatenbank ausgeführt wurden, werden übersprungen. |
JET_bitCompactStats |
Verursacht JetCompact , Statistiken in der Quelldatenbank auf eine Datei mit dem Namen DFRGINFO.TXT abzubilden. Statistiken umfassen den Namen der einzelnen Tabellen in der Quelldatenbank, die Anzahl der Zeilen in jeder Tabelle, die Gesamtgröße aller Zeilen in jeder Tabelle, die Gesamtgröße in Bytes aller Spalten des Typs JET_coltypLongText oder JET_coltypLongBinary , die groß genug waren, um vom Datensatz getrennt zu werden, anzahl der gruppierten Indexblattseiten, und die Anzahl der langen Wertblattseiten. Darüber hinaus werden Zusammenfassungsstatistiken einschließlich der Größe der Quelldatenbank, der Zieldatenbank, der Zeit, die für die Datenbankkomprimierung erforderlich ist, temporäre Datenbankraum werden ebenfalls abgeblendt. |
Rückgabewert
Diese Funktion gibt den JET_ERR-Datentyp mit einem der folgenden Rückgabecodes zurück. Weitere Informationen zu den möglichen ESE-Fehlern finden Sie unter Extensible Storage Modulfehler und Fehlerbehandlungsparameter.
Rückgabecode |
Beschreibung |
---|---|
JET_errSuccess |
Der Vorgang wurde erfolgreich abgeschlossen. |
JET_errClientRequestToStopJetService |
Es ist nicht möglich, den Vorgang abzuschließen, da alle Aktivitäten auf der Instanz, die der Sitzung zugeordnet ist, aufgrund eines Aufrufs von JetStopService beendet wurde. |
JET_errFeatureNotAvailable |
Ein nicht NULL-PConvert-Zeiger wurde bereitgestellt, aber die verwendete VERSION von ESE unterstützt das Konvertierungsfeature nicht. Dieses Feature wurde in der Windows Server 2003-Version von ESE entfernt. |
JET_errInstanceUnavailable |
Es ist nicht möglich, den Vorgang abzuschließen, da die Instanz, die der Sitzung zugeordnet ist, einen tödlichen Fehler aufgetreten ist, der erfordert, dass der Zugriff auf alle Daten widerrufen wird, um die Integrität dieser Daten zu schützen. Dieser Fehler wird nur von Windows XP und späteren Versionen zurückgegeben. |
JET_errInTransaction |
Die Anrufsitzung befindet sich in einer Transaktion. JetCompact muss von einer Sitzung außerhalb einer Transaktion aufgerufen werden. |
JET_errNotInitialized |
Es ist nicht möglich, den Vorgang abzuschließen, da die instanz, die der Sitzung zugeordnet ist, noch nicht initialisiert wurde. |
JET_errRestoreInProgress |
Es ist nicht möglich, den Vorgang abzuschließen, da ein Wiederherstellungsvorgang in Der Instanz ausgeführt wird, die der Sitzung zugeordnet ist. |
JET_errSessionSharingViolation |
Die gleiche Sitzung kann nicht gleichzeitig für mehrere Thread verwendet werden. Dieser Fehler wird nur von Windows XP und späteren Versionen zurückgegeben. |
JET_errTermInProgress |
Es ist nicht möglich, den Vorgang abzuschließen, da die Instanz, die der Sitzung zugeordnet ist, heruntergefahren wird. |
Bei Erfolg wird die Quelldatenbank in die Zieldatenbank kopiert. Die Zieldatenbank befindet sich beispielsweise in einem optimalen Zustand, z. B. alle Tabellenindizes befinden sich im benachbarten logischen Datenträgerspeicher. Jede Indexseite wird auf den Betrag gepolstert, der konfiguriert wurde, wenn die Indizes ursprünglich in der Quelldatenbank erstellt wurden. Alle Daten- und Metadateneinstellungen werden mit vollständiger Genauigkeit kopiert, es sei denn, die Reparaturoption wurde angegeben. Wenn die Reparaturoption angegeben wurde, wurden möglicherweise einige Daten aus der Quelldatenbank nicht kopiert.
Bei Fehlern kann die Zieldatenbank vorhanden sein, ist jedoch keine vollständige Kopie der Quelldatenbank.
Hinweise
Das Komprimieren einer Datenbank wird auch verwendet, um eine Datenbank von einem früheren Versionsformat auf eine modernere Version zu aktualisieren. Ein optionaler Parameter ist pconvert, der eine Struktur enthält, die eine Beschreibung für eine frühere Version-DLL enthält, die zum Lesen des Quelldatenbankformats verwendet werden kann. Dieses Feature wurde in Windows Server 2003 eingestellt. Nach Windows Server 2003 können neue Versionen von ESE immer ältere Versionen des Datenbankformats lesen und daher dieses Feature nicht benötigt werden.
Die gewünschte Dichte der Daten nach einem kompakten Vorgang wird angegeben, wenn Tabellen und Indizes erstellt werden. Die Dichte muss zwischen 20 % und 100 % liegen. Wenn eine Datenbank in erster Linie gelesen und nicht aktualisiert wird, legen Anwendungen die Dichte auf 100 % fest, um die Anzahl der I/O-Vorgänge während der Abfrageverarbeitung zu verringern. Wenn die Daten jedoch häufig mit Vorgängen aktualisiert werden, die die Größe der daten erhöhen, die zusammen mit dem Datensatz gespeichert werden, oder neue Daten häufig eingefügt werden, wählt die Anwendung eine geringere Dichte aus, sodass Updates häufiger erforderliche Ressourcen finden. Der Vorgang der Komprimierung der Datenbank bewirkt, dass die Datenbank ideal nach der vom Anwendung ausgewählten Füllung ausgelegt wird.
Die Datenbankkomprimierung ist ein Off-Line-Vorgang. Es kann nicht ausgeführt werden, während die Datenbank verwendet wird. Daher wird es in der Regel als Teil eines Buildprozesses der Entwicklung einer Anwendung durchgeführt, die einen Datensatz als Teil selbst bereitstellt.
Die Offlinedatenbankkomprimierung berührt alle Daten in einer Datenbank und kann als Mittel zur Überprüfung der Konsistenz einer Datenbank verwendet werden. Wenn eine Datenbank verdächtiger ist, kann es komprimiert werden. Wenn kein Fehler aus der Komprimierung gefunden wird, wird bekannt, dass sich die Datenbank in einem gültigen Zustand für ESE befindet.
Requirements (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 JetCompactW (Unicode) und JetCompactA (ANSI). |