Функция JetComputeStats

Применимо к: Windows | Windows Server

Функция JetComputeStats

Функция JetComputeStats выполняет обход по каждому индексу таблицы для точного вычисления количества записей в индексе и количества отдельных ключей в индексе. Эти сведения, а также количество страниц базы данных, выделенных для индекса, и текущее время вычисления хранятся в метаданных индекса в базе данных. Эти данные можно впоследствии получить с помощью информационных операций.

    JET_ERR JET_API JetComputeStats(
      __in          JET_SESID sesid,
      __in          JET_TABLEID tableid
    );

Параметры

sesid

Сеанс, используемый для этого вызова.

tableid

Курсор, который будет использоваться для этого вызова. Описывает таблицу для вычисления статистики.

Возвращаемое значение

Эта функция возвращает тип данных JET_ERR с одним из следующих кодов возврата. Дополнительные сведения о возможных ошибках ESE см. в разделах Ошибки подсистемы расширяемого хранилища и Параметры обработки ошибок.

Код возврата

Описание

JET_errSuccess

Операция выполнена успешно.

JET_errClientRequestToStopJetService

Невозможно выполнить операцию, так как все действия экземпляра, связанного с сеансом, прекратились в результате вызова JetStopService.

JET_errInstanceUnavailable

Невозможно выполнить операцию, так как экземпляр, связанный с сеансом, столкнулся с неустранимой ошибкой, требующей отмены доступа ко всем данным для защиты целостности этих данных.

Эта ошибка будет возвращена только в Windows XP и более поздних выпусках.

JET_errNotInitialized

Невозможно выполнить операцию, так как экземпляр, связанный с сеансом, еще не инициализирован.

JET_errRestoreInProgress

Невозможно выполнить операцию, так как операция восстановления выполняется в экземпляре, связанном с сеансом.

JET_errRollbackError

Произошла ошибка, требующая отката всех изменений в этой операции, но произошел сбой самого отката транзакции.

JET_errSessionSharingViolation

Один и тот же сеанс нельзя использовать для нескольких потоков одновременно.

Эта ошибка будет возвращена только в Windows XP и более поздних выпусках.

JET_errTermInProgress

Невозможно завершить операцию, так как экземпляр, связанный с сеансом, завершает работу.

После успешного выполнения актуальная статистика сохраняется в каталогах баз данных для таблицы, описанной с помощью заданного курсора.

При сбое никакие обновления базы данных не выполняются.

Комментарии

Эта операция может потреблять ресурсы, так как каждый индекс в таблице должен выполняться в полном объеме. JetGetRecordPosition можно использовать для получения приблизительной оценки количества записей в индексе, но сама по себе она не может оценить количество различных значений в индексе.

Данные, вычисленные этой операцией, начинают устаревать, и таблица впоследствии обновляется.

Обновления к базе данных, созданной JetComputeStats, выполняются в отложенном режиме. Это означает, что эта операция не будет сопровождаться очисткой журнала, а сбой системы после возврата JET_errSuccess JetComputeStats по-прежнему может привести к потере этих обновлений.

Требования

Требование Значение

Клиент

Требуется Windows Vista, Windows XP или Windows 2000 Professional.

Сервер

Требуется Windows Server 2008, Windows Server 2003 или Windows 2000 Server.

Верхняя часть

Объявлено в Esent.h.

Библиотека

Используйте ESENT.lib.

DLL

Требуется ESENT.dll.

См. также:

JET_ERR
JET_TABLEID
JET_SESID
JetGetRecordPosition
JetGetTableInfo
JetGetTableIndexInfo
JetStopService