Функция JetOSSnapshotFreeze

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

Функция JetOSSnapshotFreeze

Функция JetOSSnapshotFreeze запускает snapshot. Пока выполняется snapshot, подсистема не может выполнять никаких операций записи на диск.

Windows XP:JetOSSnapshotFreeze представлена в Windows XP.

    JET_ERR JET_API JetOSSnapshotFreeze(
      __in          const JET_OSSNAPID snapId,
      __out         unsigned long* pcInstanceInfo,
      __out         JET_INSTANCE_INFO** paInstanceInfo,
      __in          const JET_GRBIT grbit
    );

Параметры

snapId

Идентификатор сеанса snapshot.

pcInstanceInfo

Количество экземпляров, выполняющихся в обработчике, которые являются частью сеанса snapshot.

paInstanceInfo

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

grbit

Параметры для этого вызова. Этот параметр зарезервирован для дальнейшего использования, и поддерживается только 0.

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

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

Код возврата

Описание

JET_errSuccess

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

JET_errInvalidParameter

Для выходных параметров указаны указатели NULL, недопустимый сеанс snapshot или недопустимый параметр grbit.

JET_errOSSnapshotInvalidSequence

Сеанс snapshot не находится в соответствующем состоянии для запуска заморозки (например, предыдущий сбой заморозки в этом сеансе ранее).

JET_errOSSnapshotNotAllowed

Подсистема не находится в состоянии, в котором может выполняться snapshot. Одно или несколько резервных копий потоковой передачи уже выполняется, или один или несколько экземпляров проходят шаги восстановления или завершаются.

JET_errOSSnapshotInvalidSnapId

Недопустимый идентификатор сеанса snapshot.

JET_errOutOfMemory

Сбой функции из-за нехватки памяти.

JET_errOutOfThreads

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

Если эта функция будет выполнена успешно, операции ввода-вывода для записи не будут выданы для файлов базы данных или файлов журнала, которые являются частью экземпляров, которые заморожены. Кроме того, сведения об экземпляре будут заполнены должным образом, и их необходимо освободить позже, вызвав JetFreeBuffer с указателем на возвращенный массив сведений об экземпляре.

Если эта функция завершается сбоем, подсистема продолжит работать в обычном режиме, а операции ввода-вывода выполняются как обычно. Нет необходимости вызывать JetOSSnapshotThaw в случае сбоя заморозки. Кроме того, сведения об экземпляре не будут заполнены, поэтому не нужно освобождать этот ресурс.

Комментарии

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

Состояние, в котором будут находиться базы данных и файлы журнала во время заморозки (состояние, в котором файлы будут находиться в образе моментальных снимков тома), будет таким, что при последующем восстановлении этих файлов будет возможно нормальное восстановление.

Так как операции записи не выполняются в течение периода заморозки, обычные вызовы API в подсистеме могут быть остановлены на этот интервал. Клиентское приложение должно иметь возможность обрабатывать вызовы API, которые могут занять больше времени, чем обычно, если происходит зависание.

Из-за возможных последствий, описанных выше, существует внутреннее время ожидания, по истечении которого snapshot сеанс остановит этап заморозки, даже если api, выполняющие оттепель или прерывание, не были вызваны. Значение времени ожидания можно изменить с помощью системного параметра JET_paramOSSnapshotTimeout . Обратите внимание, что типичный интервал заморозки находится в диапазоне 10 секунд, а время ожидания по умолчанию составляет около 60 секунд.

Требования

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

Клиент

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

Сервер

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

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

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

Библиотека

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

DLL

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

Юникод

Реализовано как JetOSSnapshotFreezeW (Юникод) и JetOSSnapshotFreezeA (ANSI).

См. также:

JET_ERR
JET_INSTANCE_INFO
JET_OSSNAPID
JetOSSnapshotAbort
JetOSSnapshotPrepare
JetOSSnapshotPrepareInstance
JetOSSnapshotThaw