Функция JetCompact
Применимо к: Windows | Windows Server
Функция JetCompact
Функция JetCompact создает копию существующей базы данных. Копия сжимается до оптимального для использования состояния. Данные в скопированных данных будут упакованы в соответствии с мерами, выбранными для индексов при создании индекса. Таким образом, сжатые данные могут храниться как можно более плотно. Кроме того, сжатые данные могут зарезервировать место для последующего роста записей или вставки индекса.
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
);
Параметры
sesid
Сеанс, используемый для этого вызова.
szDatabaseSrc
База данных-источник, которая будет сжата.
szDatabaseDest
Имя, используемое для сжатой базы данных.
pfnStatus
Функция обратного вызова, которую можно периодически вызывать с помощью операции сжатия базы данных для создания отчетов о ходе выполнения.
pconvert
Указатель, используемый для обозначения альтернативной библиотеки DLL ESE, которую можно использовать для чтения базы данных-источника, и для предоставления необязательных параметров для операции JetCompact , которая преобразует базу данных из формата более ранней в более позднюю версию. Эта функция была прекращена в Windows Server 2003.
grbit
Группа битов, задающая ноль или несколько следующих параметров.
Значение |
Значение |
---|---|
JET_bitCompactRepair |
Используется при повреждении базы данных-источника. Он обеспечивает целый набор новых поведений, предназначенных для получения как можно больше данных из базы данных-источника. JetCompact с этим набором параметров может возвращать JET_errSuccess но не копировать все данные, созданные в базе данных-источнике. Данные, которые находились в поврежденных участках базы данных-источника, будут пропущены. |
JET_bitCompactStats |
Приводит к тому, что JetCompact создает дамп статистики в базе данных-источнике в файл с именем DFRGINFO.TXT. Статистика включает имя каждой таблицы в базе данных-источнике, количество строк в каждой таблице, общий размер в байтах всех строк в каждой таблице, общий размер в байтах всех столбцов типа JET_coltypLongText или JET_coltypLongBinary , которые были достаточно большими для хранения отдельно от записи, количество конечных страниц кластеризованного индекса. и количество конечных страниц длинных значений. Кроме того, сводные статистические данные, включая размер базы данных-источника, целевую базу данных, время, необходимое для сжатия базы данных, временное пространство базы данных, также создаются дампами. |
Возвращаемое значение
Эта функция возвращает тип данных JET_ERR с одним из следующих кодов возврата. Дополнительные сведения о возможных ошибках ESE см. в разделах Ошибки подсистемы расширяемого хранилища и Параметры обработки ошибок.
Код возврата |
Описание |
---|---|
JET_errSuccess |
Операция выполнена успешно. |
JET_errClientRequestToStopJetService |
Невозможно выполнить операцию, так как все действия экземпляра, связанного с сеансом, прекратились в результате вызова JetStopService. |
JET_errFeatureNotAvailable |
Указан указатель pconvert , отличный от NULL, но используемая версия ESE не поддерживает функцию преобразования. Эта функция была удалена в версии ESE для Windows Server 2003. |
JET_errInstanceUnavailable |
Невозможно выполнить операцию, так как экземпляр, связанный с сеансом, столкнулся с неустранимой ошибкой, требующей отмены доступа ко всем данным для защиты целостности этих данных. Эта ошибка будет возвращена только в Windows XP и более поздних выпусках. |
JET_errInTransaction |
Вызывающий сеанс находится в рамках транзакции. JetCompact должен вызываться сеансом вне любой транзакции. |
JET_errNotInitialized |
Невозможно выполнить операцию, так как экземпляр, связанный с сеансом, еще не инициализирован. |
JET_errRestoreInProgress |
Невозможно выполнить операцию, так как операция восстановления выполняется в экземпляре, связанном с сеансом. |
JET_errSessionSharingViolation |
Один и тот же сеанс нельзя использовать для нескольких потоков одновременно. Эта ошибка будет возвращена только в Windows XP и более поздних выпусках. |
JET_errTermInProgress |
Невозможно завершить операцию, так как экземпляр, связанный с сеансом, завершает работу. |
При успешном выполнении исходная база данных копируется в целевую базу данных. Целевая база данных находится в оптимальном состоянии, например, все индексы таблиц находятся в соседнем пространстве логического диска. Каждая страница индекса заполняется суммой, настроенной при первоначальном создании индексов в базе данных-источнике. Все параметры данных и метаданных копируются с полной точностью, если не указан параметр восстановления. Если указан параметр восстановления, некоторые данные из базы данных-источника, возможно, не были скопированы.
В случае сбоя целевая база данных может существовать, но не является полной копией базы данных-источника.
Комментарии
Сжатие базы данных также используется для обновления базы данных с более ранней версии до более современной версии. Необязательный параметр — pconvert, который содержит структуру, которая может содержать описание библиотеки DLL более ранней версии, используемой для чтения формата базы данных-источника. Эта функция была прекращена в Windows Server 2003. После выпуска Windows Server 2003 новые версии ESE всегда могут считывать старые версии формата базы данных, поэтому эта функция не требуется.
Требуемая плотность данных после операции сжатия указывается при создании таблиц и индексов. Плотность должна быть от 20 % до 100 %. Если база данных в основном считывается, а не обновляется, приложения установят плотность в 100 %, чтобы уменьшить количество операций ввода-вывода во время обработки запроса. Однако если данные часто обновляются с помощью операций, которые увеличивают размер данных, хранящихся вместе с записью, или часто добавляются новые данные, приложение выберет более низкую плотность, чтобы обновления чаще находили необходимые ресурсы. Операция сжатия базы данных приводит к тому, что база данных будет идеально выложена в соответствии с заполнением, выбранным приложением.
Сжатие базы данных является автономной операцией. Она не может быть выполнена, пока используется база данных. В результате это обычно выполняется как часть процесса сборки приложения, которое предоставляет набор данных как часть самого себя.
Сжатие автономной базы данных затрагивает каждый бит данных в базе данных и может использоваться в качестве средства проверки согласованности базы данных. Если база данных является подозрительной, ее можно сжать. Если ошибка при сжатии не найдена, будет известно, что база данных находится в допустимом состоянии для ESE.
Требования
Требование | Значение |
---|---|
Клиент |
Требуется Windows Vista, Windows XP или Windows 2000 Professional. |
Сервер |
Требуется Windows Server 2008, Windows Server 2003 или Windows 2000 Server. |
Верхняя часть |
Объявлено в Esent.h. |
Библиотека |
Используйте ESENT.lib. |
DLL |
Требуется ESENT.dll. |
Юникод |
Реализовано как JetCompactW (Юникод) и JetCompactA (ANSI). |