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 ist. Die Daten in den kopierten Daten werden entsprechend den Für die Indizes bei der Indexerstellung ausgewählten Measures gepackt. Auf diese Weise können komprimierte Daten so dicht wie möglich gespeichert werden. Alternativ können komprimierte Daten Speicherplatz für nachfolgendes Datensatzwachstum oder Indexeinfügungen 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 Datenbankkomprimieren-Vorgang aufgerufen werden kann, um den Fortschritt zu melden.

pconvert

Ein Zeiger, der verwendet wird, um eine alternative ESE-DLL festzulegen, die zum Lesen der Quelldatenbank verwendet werden kann, und zum Bereitstellen optionaler Parameter für einen JetCompact-Vorgang , der eine Datenbank von einem früheren In ein höheres Versionsformat konvertiert. Dieses Feature wurde in Windows Server 2003 eingestellt.

grbit

Eine Gruppe von Bits, die null oder mehr der folgenden Optionen angibt.

Wert

Bedeutung

JET_bitCompactRepair

Wird verwendet, wenn bekannt ist, dass die Quelldatenbank beschädigt ist. Es ermöglicht eine ganze Reihe neuer Verhaltensweisen, die so viele Daten wie möglich aus der Quelldatenbank retten sollen. JetCompact mit diesem Optionssatz gibt möglicherweise JET_errSuccess aber nicht alle in der Quelldatenbank erstellten Daten zurück. Daten, die sich in beschädigten Teilen der Quelldatenbank befanden, werden übersprungen.

JET_bitCompactStats

Bewirkt , dass JetCompact Statistiken in der Quelldatenbank in einer Datei mit dem Namen DFRGINFO.TXT abspeichert. Statistiken umfassen den Namen jeder Tabelle in der Quelldatenbank, die Anzahl der Zeilen in jeder Tabelle, die Gesamtgröße in Bytes 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 gespeichert zu werden, die Anzahl der gruppierten Indexblattseiten, und die Anzahl der Seiten mit langen Werten. Darüber hinaus werden Zusammenfassungsstatistiken, einschließlich der Größe der Quelldatenbank, der Zieldatenbank, der für die Datenbankkomprimierung benötigten Zeit und temporärem Datenbankspeicherplatz, ebenfalls abgedumpt.

Rückgabewert

Diese Funktion gibt den JET_ERR-Datentyp mit einem der folgenden Rückgabecodes zurück. Weitere Informationen zu möglichen ESE-Fehlern finden Sie unter Erweiterbare Speichermodulfehler 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 dem instance, die der Sitzung zugeordnet sind, aufgrund eines Aufrufs von JetStopService beendet wurden.

JET_errFeatureNotAvailable

Es wurde ein pconvert-Zeiger ohne NULL bereitgestellt, aber die verwendete ESE-Version 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 beim instance, der der Sitzung zugeordnet ist, ein schwerwiegender 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 höheren Versionen zurückgegeben.

JET_errInTransaction

Die aufrufende Sitzung befindet sich innerhalb 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 der Sitzung zugeordnete instance noch nicht initialisiert wurde.

JET_errRestoreInProgress

Es ist nicht möglich, den Vorgang abzuschließen, da auf dem der Sitzung zugeordneten instance ein Wiederherstellungsvorgang ausgeführt wird.

JET_errSessionSharingViolation

Dieselbe Sitzung kann nicht für mehrere Threads gleichzeitig verwendet werden.

Dieser Fehler wird nur von Windows XP und höheren Versionen zurückgegeben.

JET_errTermInProgress

Es ist nicht möglich, den Vorgang abzuschließen, da die der Sitzung zugeordnete instance heruntergefahren wird.

Bei Erfolg wird die Quelldatenbank in die Zieldatenbank kopiert. Die Zieldatenbank befindet sich in einem optimalen Zustand, z. B. befinden sich alle Tabellenindizes im angrenzenden logischen Datenträgerspeicher. Jede Indexseite ist auf den Betrag aufgefüllt, der beim ursprünglichen Erstellen der Indizes in der Quelldatenbank konfiguriert wurde. Alle Daten- und Metadateneinstellungen werden mit voller Genauigkeit kopiert, es sei denn, die Reparaturoption wurde angegeben. Wenn die Reparaturoption angegeben wurde, wurden einige Daten aus der Quelldatenbank möglicherweise nicht kopiert.

Bei Einem Fehler ist die Zieldatenbank möglicherweise vorhanden, ist aber keine vollständige Kopie der Quelldatenbank.

Bemerkungen

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 DLL früherer Version enthalten kann, die zum Lesen des Quelldatenbankformats verwendet werden soll. Dieses Feature wurde in Windows Server 2003 eingestellt. Nach Windows Server 2003 können neue Versionen von ESE immer ältere Versionen des Datenbankformats lesen, sodass dieses Feature nicht erforderlich ist.

Die gewünschte Datendichte nach einem kompakten Vorgang wird angegeben, wenn Tabellen und Indizes erstellt werden. Die Dichte muss zwischen 20 % und 100 % liegen. Wenn eine Datenbank hauptsächlich gelesen und nicht aktualisiert wird, legen Anwendungen die Dichte auf 100 % fest, um die Anzahl der E/A-Vorgänge während der Abfrageverarbeitung zu verringern. Wenn die Daten jedoch häufig mit Vorgängen aktualisiert werden, die die Größe der zusammen mit dem Datensatz gespeicherten Daten erhöhen oder häufig neue Daten eingefügt werden, wählt die Anwendung eine geringere Dichte, sodass Updates häufiger die benötigten Ressourcen finden. Durch das Komprimieren der Datenbank wird die Datenbank ideal entsprechend der von der Anwendung gewählten Füllung ausgelegt.

Die Datenbankverdichtung ist ein Offlinevorgang. Sie kann nicht ausgeführt werden, während die Datenbank verwendet wird. Daher erfolgt dies in der Regel im Rahmen eines Buildprozesses zur Entwicklung einer Anwendung, die ein Dataset als Teil von sich selbst bereitstellt.

Die Offline-Datenbankkomprimierung berührt alle Daten in einer Datenbank und kann als Mittel zur Überprüfung der Konsistenz einer Datenbank verwendet werden. Wenn eine Datenbank verdächtig ist, kann sie komprimiert werden. Wenn bei der Komprimierung kein Fehler gefunden wird, ist bekannt, dass sich die Datenbank in einem gültigen Zustand für ESE befindet.

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