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