Функция JetRestoreInstance

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

Функция JetRestoreInstance

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

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

    JET_ERR JET_API JetRestoreInstance(
      __in          JET_INSTANCE instance,
      __in          JET_PCSTR sz,
      __in_opt      JET_PCSTR szDest,
      __in          JET_PFNSTATUS pfn
    );

Параметры

Экземпляр

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

В Windows XP и более поздних выпусках использование этого параметра зависит от режима работы подсистемы. Если подсистема работает в устаревшем режиме (режим совместимости Windows 2000), где поддерживается только один экземпляр, то этот параметр может иметь значение NULL или задать допустимый выходной буфер, содержащий значение NULL или JET_instanceNil, который вернет глобальный дескриптор экземпляра, созданный как побочный эффект инициализации. Затем этот дескриптор экземпляра можно передать в любой другой API, который принимает экземпляр. Если подсистема работает в режиме с несколькими экземплярами, для этого параметра необходимо задать допустимый входной буфер, содержащий дескриптор экземпляра, возвращаемый инициализируемым экземпляром JetCreateInstance .

Sz

Папка, в которой находится резервная копия. Резервная копия должна быть создана с помощью API JetBackup .

szDest

Имя папки, в которой будут скопированы и восстановлены файлы базы данных из резервного набора данных. Если для этого параметра задано значение NULL (что относится к устаревшей версии JetRestore), файлы базы данных будут скопированы и восстановлены в исходное расположение.

Pfn

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

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

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

Код возврата

Описание

JET_errSuccess

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

JET_errAlreadyInitialized

Операция завершилась сбоем, так как подсистема уже инициализирована для этого экземпляра.

JET_errInvalidLogSequence

Набор файлов журнала из резервного набора данных и из текущего пути к журналу не совпадают.

JET_errInvalidParameter

Один из предоставленных параметров содержал непредвиденное значение или значение, которое не имело смысла в сочетании со значением другого параметра. Эта ошибка будет возвращена JetRestoreInstance , если подсистема находится в режиме с несколькими экземплярами, а pinstance ссылается на недопустимый экземпляр Windows XP и более поздних выпусков.

JET_errInvalidPath

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

JET_errPageSizeMismatch

Операция завершилась сбоем, так как ядро настроено на использование размера страницы базы данных (с помощью JetSetSystemParameter для JET_paramDatabasePageSize), который не соответствует размеру страницы базы данных, используемому для создания файлов журнала транзакций или баз данных, связанных с файлами журнала транзакций.

JET_errRunningInMultiInstanceMode

Операция завершилась сбоем, так как параметры подразумевали режим одиночного экземпляра (режим совместимости Windows 2000), а подсистема уже находится в режиме с несколькими экземплярами.

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

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

Комментарии

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

JetRestoreInstance должен вызываться для экземпляра, который уже был создан с помощью JetCreateInstance.

Так как во время восстановления будет использоваться значительное количество страниц базы данных и журналов транзакций, эти функции могут возвращать целый ряд ошибок. Такие ошибки могут быть от временных сбоев выделения ресурсов, таких как Jet_errOutOfMemory, до ошибок, представляющих физические повреждения, такие как JET_errReadVerifyFailure, JET_errLogFileCorrupt или JET_errBadPageLink. Эти ошибки почти всегда вызваны проблемами с оборудованием, поэтому их невозможно избежать. Неправильное управление файлами чаще всего проявляется как JET_errMissingLogFile, JET_errAttachedDatabaseMismatch, JET_errDatabaseSharingViolation или JET_errInvalidLogSequence. Эти ошибки можно предотвратить приложением. Приложение должно быть осторожным, чтобы защитить репозиторий этих файлов от манипуляций со стороны внешних сил, таких как пользователь или другие приложения. Если приложение хочет полностью уничтожить экземпляр, необходимо удалить все файлы, связанные с экземпляром. К ним относятся файл контрольных точек, файлы журнала транзакций и все файлы базы данных, присоединенные к экземпляру .

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

Требования

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

Клиент

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

Сервер

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

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

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

Библиотека

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

DLL

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

Юникод

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

См. также:

JET_ERR
JET_GRBIT
JET_INSTANCE
JetBackup
JetBackupInstance
JetCreateInstance
JetSetSystemParameter