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).

Weitere Informationen

JET_COLTYP
JET_ERR
JET_SESID
JetDefragment
JetStopService