JetCompact-Funktion

Gilt für: Windows | Windows Server

JetCompact-Funktion

Die JetCompact-Funktion erstellt eine Kopie einer vorhandenen Datenbank. Die Kopie wird für die Verwendung in einen optimalen Zustand komprimiert. Die Daten in den kopierten Daten werden entsprechend den Measures gepackt, die für die Indizes bei der Indexerstellung ausgewählt wurden. Auf diese Weise können komprimierte Daten so dichte wie möglich gespeichert werden. Alternativ können komprimierte Daten Speicherplatz für nachfolgende Datensatzvergrößerungen 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 Datenbank-Compact-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 um optionale Parameter für einen JetCompact-Vorgang bereitzustellen, 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. Sie ermöglicht eine ganze Reihe neuer Verhaltensweisen, die so viele Daten wie möglich aus der Quelldatenbank speichern sollen. JetCompact mit dieser Option gibt möglicherweise JET_errSuccess zurück, kopiert aber nicht alle in der Quelldatenbank erstellten Daten. Daten, die sich in beschädigten Teilen der Quelldatenbank befanden, werden übersprungen.

JET_bitCompactStats

Bewirkt, dass JetCompact Statistiken für die Quelldatenbank in eine Datei mit dem Namen DFRGINFO.TXT. Zu den Statistiken gehören der Name 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 vom Typ JET_coltypLongText oder JET_coltypLongBinary, die groß genug waren, um getrennt vom Datensatz gespeichert zu werden, die Anzahl der Blattseiten des gruppierten Indexes und die Anzahl der Blattseiten mit langen Werten. Darüber hinaus werden zusammenfassende Statistiken, einschließlich der Größe der Quelldatenbank, der Zieldatenbank, der für die Datenbankkomp compaction erforderlichen Zeit und des temporären Datenbankspeicherplatzes, ebenfalls gedumpt.

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 Engine Errors and Error Handling Parameters.

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, als Ergebnis eines Aufrufs von JetStopServiceaufgetreten sind.

JET_errFeatureNotAvailable

Ein pconvert-Zeiger ungleich NULL wurde 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 für die Instanz, die 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 späteren 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 Instanz noch nicht initialisiert wurde.

JET_errRestoreInProgress

Es ist nicht möglich, den Vorgang abzuschließen, da ein Wiederherstellungsvorgang für die Instanz ausgeführt wird, die der Sitzung zugeordnet ist.

JET_errSessionSharingViolation

Dieselbe Sitzung kann nicht für mehrere Threads gleichzeitig 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 der Sitzung zugeordnete Instanz 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 Speicherplatz. Jede Indexseite wird auf die Menge aufgefüllt, die konfiguriert wurde, als die Indizes ursprünglich in der Quelldatenbank erstellt wurden. 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, aber keine vollständige Kopie der Quelldatenbank.

Bemerkungen

Das Komprimieren einer Datenbank wird auch verwendet, um ein Upgrade einer Datenbank von einem früheren Versionsformat auf eine modernere Version durchzuführen. Ein optionaler Parameter ist pconvert, der eine -Struktur enthält, die eine Beschreibung für eine frühere Versions-DLL zum Lesen des Quelldatenbankformats enthalten kann. Dieses Feature wurde in Windows Server 2003 eingestellt. Nach Windows Server 2003 können neue Ese-Versionen immer ältere Versionen des Datenbankformats lesen. Daher ist dieses Feature nicht erforderlich.

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 von E/A-Vorgängen während der Abfrageverarbeitung zu reduzieren. 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 wenn häufig neue Daten eingefügt werden, wählt die Anwendung eine niedrigere Dichte aus, sodass Updates häufiger die erforderlichen Ressourcen finden. Das Komprimieren der Datenbank bewirkt, dass die Datenbank gemäß der von der Anwendung ausgewählten Füllung ideal angeordnet wird.

Die Datenbankkompprimierung 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 übermittelt.

Die Komprimierung von Offlinedatenbanken betrifft jedes Datenbit in einer Datenbank und kann 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.

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.

Header

Deklariert in Esent.h.

Bibliothek

Verwenden Sie ESENT.lib.

DLL

Erfordert ESENT.dll.

Unicode

Wird als JetCompactW (Unicode) und JetCompactA (ANSI) implementiert.

Weitere Informationen

JET_COLTYP
JET_ERR
JET_SESID
JetDefragment
JetStopService