Freigeben über


JetDefragment-Funktion

Letzte Änderung: Freitag, 27. Februar 2015

Gilt für: Windows | Windows Server

JetDefragment-Funktion

Die Funktion JetDefragment startet und beendet Datenbank Defragmentierung Aufgaben, bei denen der Datenorganisation in einer Datenbank verbessert. Dies geschieht zum Wachstum der Datenbanken mithilfe von vorhandenen Zuordnung effizienter innerhalb der Datenbank auf dem Datenträger zu beschränken. Sie können auch Arbeitssatzes, indem sichergestellt wird reduziert, die Daten genauer gepackt ist. Schließlich können sie Anwendungsleistung durch Beschleunigung häufige Vorgänge über eine bessere Datenorganisation verbessern.

Defragmentierung ist ein online-Vorgang und regulären Datenbankaktivität, wie Abfragevorgänge oder Datenaktualisierungen nicht unterbrochen. JetDefragment macht auch keine Kopie aller vorhandenen Daten. Stattdessen defragmentiert eine Datenbank vorhanden. Schließlich wird JetDefragment Speicherplatz für die interne Datenbank für die Weiterverwendung wiederhergestellt, jedoch nicht überzählige Leerzeichen auf das Dateisystem Betriebssystem freigibt.

Das sich ergebende Format der Daten kann sehr viel effizienter ist jedoch nicht in der Regel optimale. Defragmentierung beträgt Freigeben von Datenbankseiten erneut verwenden Sie für die Daten enthalten, die sich logisch bereits gelöscht wurde. Defragmentierung kann auch Datenbankseiten Wiederverwendung in einigen Fällen durch die Kombination von Daten aus zwei Seiten, wenn er auf eine einzelne Seite passen.

Dieser Vorgang unterscheidet sich von JetCompact ist , wodurch eine Kopie einer schreibgeschützten Datenbank in ein hochgradig optimale Formular.

JET_ERR JET_API JetDefragment(
  __in          JET_SESID sesid,
  __in          JET_DBID dbid,
  __in          JET_PCSTR szTableName,
  __out_opt     unsigned long* pcPasses,
  __out_opt     unsigned long* pcSeconds,
  __in          JET_GRBIT grbit
);

Parameter

sesid

Die Sitzung für diesen Aufruf verwenden.

DBID

Die Datenbank, die Defragmentierung sein wird.

szTableName

Nicht verwendete Parameter. Defragmentierung wird für die gesamte Datenbank, die durch die angegebene Datenbank-ID beschrieben ausgeführt.

pcPasses

Wenn Sie eine Defragmentierungsaufgabe online starten, wird input-Parameter die maximale Anzahl von Defragmentierung übergibt. Wenn Sie eine Defragmentierungsaufgabe online stoppen, wird diese Ausgabepuffer auf die Anzahl von Durchläufen durchgeführt festgelegt.

Wenn dieser Parameter auf NULL festgelegt ist, ist die Anzahl der online-Defragmentierung übergibt unbegrenzt.

pcSeconds

Wenn Sie eine Defragmentierungsaufgabe online starten, legt input-Parameter den maximalen Zeitraum für die Defragmentierung. Wenn Sie eine Defragmentierungsaufgabe online stoppen, wird auf die Zeitdauer für die Defragmentierung verwendet diese Ausgabepuffer festgelegt.

Wenn dieser Parameter auf NULL festgelegt ist, oder wenn PcSeconds auf einen negativen Wert verweist, ist die maximale Zeitdauer für die Defragmentierung unbegrenzt.

JET_errInvalidGrbit

Eine Gruppe von Bits 0 (null) oder mehrere der folgenden Optionen angeben.

Wert

Bedeutung

JET_bitDefragmentAvailSpaceTreesOnly

Den verfügbare Speicherplatz Teil ESE-Datenbank Speicherplatzzuteilung defragmentiert. Speicherplatz für die Datenbank ist in zwei Arten, deren Besitzer und den verfügbaren Speicherplatz unterteilt. Belegte Speicherplatz ist, die einer Tabelle oder einem Index zugewiesen ist, während bereit zur Verwendung in der Tabelle oder den Index, verfügbare Speicherplatz ist. Verfügbare Speicherplatz ist dynamischere Verhalten und Online Defragmentierung als belegte Speicherplatz oder Tabellen-oder Indexdaten erfordert.

JET_bitDefragmentBatchStart

Startet eine neue Defragmentierungsaufgabe.

JET_bitDefragmentBatchStop

Beendet eine Defragmentierungsaufgabe.

Return Value

Diese Funktion gibt den Datentyp JET_ERR mit einem der folgenden Rückgabecodes. Weitere Informationen zu den möglichen ESE-Fehlern finden Sie unter Extensible Storage Engine-Fehlern und Fehler behandeln von Parametern.

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 die Instanz der Sitzung zugeordnet aufgrund eines Aufrufs von JetStopServicebehoben ist.

JET_errDatabaseFileReadOnly

Die Datenbank für die Defragmentierung ausgewählt ist schreibgeschützt und kann nicht aktualisiert werden, keinerlei, einschließlich der Defragmentierung.

JET_errDistributedTransactionAlreadyPreparedToCommit

Die angegebene Sitzung ist in der zum Status Festschreiben bereit, und neue Updates kann nicht gestartet werden, bis die aktuelle Transaktion ein Commit oder ein Rollback.

JET_errInstanceUnavailable

Es ist nicht möglich, den Vorgang abzuschließen, da die Instanz der Sitzung zugeordnet ein schwerwiegender Fehler, der erforderlich sind aufgetreten wurde, dass der Zugriff auf alle Daten gesperrt werden, um die Integrität der Daten zu schützen. Dieser Fehler wird nur von Windows XP und spätere Versionen zurückgegeben werden.

JET_errInvalidDatabaseId

Die angegebene Datenbank-ID entspricht keine bekannte Datenbank in der Instanz.

JET_errNotInitialized

Es ist nicht möglich, den Vorgang abzuschließen, da die Instanz der Sitzung zugeordnet wurde noch nicht initialisiert.

JET_errRestoreInProgress

Es ist nicht möglich, den Vorgang abzuschließen, da ein Restore-Vorgang in Arbeit auf die Instanz der Sitzung zugeordnet ist.

JET_errSessionSharingViolation

Die gleiche Sitzung kann nicht für mehrere Threads gleichzeitig verwendet werden. Dieser Fehler wird nur von Windows XP und spätere Versionen zurückgegeben werden.

JET_errTermInProgress

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

JET_errTransReadOnly

Die angegebene Sitzung besitzt nur schreibgeschützte Berechtigungen und eine Aufgabe, die ein Update, einschließlich der Defragmentierung ausführen kann nicht gestartet werden.

JET_errVersionStoreOutOfMemory

Dieser Fehler tritt auf, wenn die konfigurierte Größe des Versionsspeichers nicht ausreichend, um alle ausstehenden Updates enthalten ist.

JET_wrnDefragAlreadyRunning

Die Option JET_bitDefragmentBatchStart übergeben wurde, jedoch eine Defragmentierungsaufgabe bereits Defragmentierung auf die angegebene Datenbank ausgeführt wird.

JET_wrnDefragNotRunning

Die Option JET_bitDefragmentBatchStop übergeben wurde, aber keine Defragmentierungsaufgabe momentan ausgeführt wird.

Bei Erfolg, Vorgang: die angeforderte Aktion entweder eine Defragmentierung starten für einen angegebenen Daten mit den angegebenen Optionen wird ausgeführt, oder die Aktion Beenden einer bestehenden Defragmentierungsaufgabe ausgeführt wird.

Bei einem Fehler wird die angeforderte Aktion, starten oder Beenden einen Auftrag online Defragmentierung nicht durchgeführt werden. Keine anderen Nebeneffekte auftreten.

Anmerkungen

Online-Defragmentierung wird sowohl durch eine Parametereinstellung für die und durch diese API gesteuert. Der Standard-System-Parameterwert ist JET_OnlineDefragAll, was bedeutet, dass Defragmentierung aktiviert ist für alle unterstützten Datenstrukturen. Es ist jedoch JetSetSystemParameterverwenden, möglich, eine online-Defragmentierung deaktivieren oder selektiv, damit Speicherplatz Strukturen nur, nur für Datenbanken, streaming nur Dateien oder eine beliebige Kombination der folgenden Optionen aktivieren. Wenn die Einstellung für online-Defragmentierung an den Einstellungen der veraltet festgelegt ist, wird JetDefragment die Einstellung JET_OnlineDefragAll behandelt.

Bei den meisten möglicherweise eine Aufgabe für jede Datenbank ausgeführt. Die Aufgabe wird als einen Thread in der ESE-hosting Prozess ausgeführt.

Die Sitzung verwendet, um die Defragmentierungsaufgabe online starten kann später für Datenbankvorgänge verwendet werden während der Defragmentierung Vorgang fortgesetzt wird, da die Defragmentierungsaufgabe eine eigenen Sitzung reserviert. Die angegebene Sitzung dient nur zum Überprüfen der Berechtigungen, die dem Vorgang starten Sitzung zugeordnet und wird nicht tatsächlich verwendet, für die Defragmentierung Vorgänge selbst.

Voraussetzungen

-Client,

Erfordert Windows Vista, Windows XP oder Windows 2000 Professional.

Server

WindowsServer 2008, WindowsServer 2003 oder Windows 2000 Server benötigt.

Kopfzeile

In Esent.h deklariert.

Library

Verwenden Sie ESENT.lib.

DLL

Erfordert "ESENT.dll".

Unicode

Implementiert als JetDefragmentW (Unicode) und JetDefragmentA (ANSI).

Siehe auch

JET_ERR
JET_SESID
JetCompact ist
JetDefragment2
JetSetSystemParameter
JetStopService