Функция JetBeginExternalBackup
Применимо к: Windows | Windows Server
Функция JetBeginExternalBackup
Функция JetBeginExternalBackup инициирует внешнее резервное копирование, когда ядро и база данных подключены и активны. JetBeginExternalBackup — это первая в серии функций, которую необходимо вызвать для успешного выполнения оперативного резервного копирования (не на основе VSS).
Внешнюю резервную копию можно использовать для реализации полных, добавочных или разностных резервных копий.
Резервная копия будет нечеткой, так как она будет согласована с одной точкой во времени в журнале транзакций, но управлять точной точкой во времени невозможно.
JET_ERR JET_API JetBeginExternalBackup(
__in JET_GRBIT grbit
);
Параметры
grbit
Группа битов, задающая ноль или более следующих параметров.
Значение |
Значение |
---|---|
JET_bitBackupAtomic |
Этот флаг является нерекомендуемой. Использование этого бита приведет к возврату JET_errInvalidgrbit. |
JET_bitBackupIncremental |
Создает добавочную резервную копию, а не полную резервную копию. Это означает, что будут создаваться только файлы журнала с момента последнего полного или добавочного резервного копирования. |
JET_bitBackupSnapshot |
Зарезервировано для последующего использования. Определяется для Windows XP. |
Возвращаемое значение
Эта функция возвращает тип данных JET_ERR с одним из следующих кодов возврата. Дополнительные сведения о возможных ошибках ESE см. в разделах Ошибки подсистемы расширяемого хранилища и Параметры обработки ошибок.
Код возврата |
Описание |
---|---|
JET_errSuccess |
Операция выполнена успешно. |
JET_errBackupInProgress |
Если внешняя резервная копия или snapshot уже выполняется, эта ошибка будет возвращена до вызова JetBeginExternalBackup (или одного из вариантов). ESE позволяет одновременно выполнять только одно оперативное резервное копирование. |
JET_errBackupNotAllowedYet |
Экземпляр или ядро СУБД находится на этапе восстановления или завершения работы. |
JET_errCheckpointCorrupt |
При полной резервной копии не удалось прочитать файл контрольной точки или не удалось проверить файл. |
JET_errCheckpointFileNotFound |
В полной резервной копии не удалось найти файл контрольных точек. |
JET_errClientRequestToStopJetService |
Операция не может завершиться, так как все действия на экземпляре, связанном с сеансом, прекратились в результате вызова JetStopService. |
JET_errInstanceUnavailable |
Операция не может завершиться, так как экземпляр, связанный с сеансом, столкнулся с неустранимой ошибкой, требующей отмены доступа ко всем данным для защиты целостности этих данных. Windows XP: Это возвращаемое значение появилось в Windows XP. |
JET_errInvalidBackup |
Циклическое ведение журнала включено, и указанный тип резервной копии JET_bitBackupIncremental. Сведения о том, как управлять циклическим или некругим ведением журнала, см. в JET_paramCircularLog в журнале транзакций . |
JET_errInvalidgrbit |
Один или несколько элементов grbit были недопустимы. |
JET_errLoggingDisabled |
Восстановление или ведение журнала отключено. Вы не сможете выполнить оперативную архивацию, если ведение журнала отключено. Дополнительные сведения о ведении журнала и восстановлении см. в разделе JET_paramRecovery. |
JET_errLogWriteFail |
Подсистема прекратила запись на диск журнала из-за переполнения журнала или ошибок ввода-вывода на диск. |
JET_errMissingFullBackup |
Была указана добавочная резервная копия (с JET_bitBackupIncremental) и никогда не была полной резервной копией, выполненной для одной из подключенных баз данных для набора ведения журнала. |
JET_errNotInitialized |
Операция не может завершиться, так как экземпляр, связанный с сеансом, еще не инициализирован. |
JET_errOutOfMemory |
Операция завершилась сбоем, так как для ее завершения было выделено недостаточно памяти. |
JET_errRestoreInProgress |
Операция не может завершиться, так как операция восстановления выполняется в экземпляре, связанном с сеансом. |
JET_errRunningInMultiInstanceMode |
Операция завершилась сбоем, так как была предпринята попытка использовать подсистему в устаревшем режиме (режим совместимости с Windows 2000), где поддерживается только один экземпляр, если на самом деле уже существует несколько экземпляров. |
JET_errTermInProgress |
Операция не может завершиться, так как экземпляр, связанный с сеансом, завершает работу. |
Если функция выполняется успешно, инициируется внешнее резервное копирование и инициализируется подсистема состояния резервного копирования. Последующие API теперь можно вызывать для завершения внешней последовательности резервного копирования и потоковой передачи или чтения файла базы данных, файла исправлений базы данных (если поддерживается) и файла журнала. Можно заносить в журнал событие, когда началось внешнее резервное копирование.
В случае сбоя функции сеанс резервного копирования не будет инициирован. Если выполняется еще один сеанс резервного копирования, он не будет отменен.
Комментарии
Процесс внешнего резервного копирования ( запущенный JetBeginExternalBackup) предназначен для обеспечения нечетких транзакций в оперативном режиме резервного копирования всего экземпляра на целевое устройство в виде потока. Резервная копия будет содержать все файлы базы данных, присоединенные к экземпляру с помощью JetAttachDatabase (для полной резервной копии), а затем связанные с ними файлы исправлений базы данных (если они поддерживаются) и, наконец, файлы журнала транзакций, созданные в процессе резервного копирования. Конечным результатом будет набор файлов, которые можно восстановить из потока, возможно, в сочетании с существующими файлами базы данных и журналов и, наконец, восстановить до согласованного состояния.
Общий порядок операций для полного резервного копирования состоит из следующих вызовов. Сначала вызывается JetBeginExternalBackup , чтобы запустить процесс резервного копирования. Затем вызывается JetGetAttachInfo , чтобы получить список баз данных, присоединенных к экземпляру, для которых необходимо создать резервную копию. Для каждой из этих баз данных вызывается JetOpenFile , за которым следует несколько вызовов JetReadFile , а затем вызов JetCloseFile. Затем вызывается JetGetLogInfo , чтобы получить список исправлений базы данных и файлов журналов для резервного копирования. Для каждого из этих файлов выполняется другая последовательность вызовов JetOpenFile, JetReadFile и JetCloseFile . Затем все нежелательные файлы журнала транзакций удаляются с помощью JetTruncateLog. Наконец, резервное копирование завершается вызовом JetEndExternalBackup.
Этот набор действий также можно изменить для выполнения добавочного резервного копирования экземпляра. Добавочная резервная копия перечисляет и создает резервные копии файлов журнала. Добавочное резервное копирование возможно только в том случае, если циклическое ведение журнала не включено.
Этот набор действий также можно изменить, чтобы разрешить последующие разностные резервные копии экземпляра. Чтобы выполнить разностное резервное копирование, не вызывайте JetTruncateLog в предыдущем полном или добавочном резервном копировании. Не вызывая JetTruncateLog, вы включаете разностные резервные копии по отношению к последней полной или добавочной резервной копии. Разностное резервное копирование возможно только в том случае, если циклическое ведение журнала не включено.
Файл исправлений базы данных — это специальный вспомогательный файл, который используется для хранения изображений страниц базы данных при определенных обстоятельствах во время резервного копирования. Этот файл должен находиться в том же расположении, что и связанная с ним база данных во время операции восстановления. Этот файл используется только в Windows 2000. В результате любое приложение, написанное для работы с Windows 2000 и другими выпусками, должно поддерживать файлы исправлений базы данных, если они присутствуют, но также не должно завершаться ошибкой, если они отсутствуют.
Требования
Требование | Значение |
---|---|
Клиент |
Требуется Windows Vista, Windows XP или Windows 2000 Профессиональная. |
Сервер |
Требуется Windows Server 2008, Windows Server 2003 или Windows 2000 Server. |
Верхняя часть |
Объявлено в Esent.h. |
Библиотека |
Используйте ESENT.lib. |
DLL |
Требуется ESENT.dll. |
См. также:
JET_ERR
JET_GRBIT
JET_INSTANCE
JetAttachDatabase
JetBeginExternalBackupInstance
JetCloseFile
JetEndExternalBackup
JetEndExternalBackupInstance2
JetGetAttachInfo
JetGetLogInfo
JetOpenFile
JetReadFile
JetStopBackup
JetTruncateLog