Проверка целостности резервного копирования с помощью API CHKSGFILES в Exchange 2013 г.

Узнайте, как использовать API CHKSGFILES для проверки резервного копирования Exchange магазина в Exchange 2013 г.

Применяется к: Exchange Server 2013 г.

Во время операций резервного копирования, управляемых Службой копирования теней тома (VSS), Exchange Server 2013 г. не может полностью прочитать каждый файл базы данных и проверить его целостность. Поэтому может потребоваться, чтобы приложение резервного копирования проверило целостность файлов базы данных и журнала транзакций. Мы рекомендуем приложению резервного копирования проверить физическую последовательность набора теневых копий перед тем, как сообщить Exchange, что резервное копирование завершено. После успешного резервного копирования Exchange обновляет заглавные главы резервной базы данных, чтобы отразить последнее успешное время резервного копирования и удаляет журналы транзакций с сервера, которые больше не требуются для перекатки из последнего успешного резервного копирования.

Необходимые условия для проверки целостности резервного копирования

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

  • Файлы из резервного Exchange хранения.
  • Версия Visual Studio начиная с Visual Studio 2010 г.
  • Файлы библиотеки и заголовки CHKSGFILES. Вы можете скачать файлы библиотеки и заголовки из Центра загрузки Майкрософт.

Проверка целостности резервного копирования

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

Проверка целостности резервного копирования

  1. Создание нового экземпляра класса CChkSGFiles.

    CCheckSGFiles::ERRerr = CCheckSGFiles::errSuccess;
    ULONGiDbError = (ULONG)CCheckSGFiles::iDbInvalid;
    CCheckSGFiles * const pcchecksgfiles = CCheckSGFiles::New();
    if ( NULL == pcchecksgfiles )
    {
      err = CCheckSGFiles::errOutOfMemory;
      printf( "ERROR: Could not allocate CCheckSGFiles object.\n" );
      goto HandleError;
    }
    

    Первые строки кода создают объект ошибки и устанавливают его начальное значение для успешности, а также создают объект, проверяя достоверность базы данных. Затем функция CChkSGFiles.New создает новый экземпляр класса CChkSGFiles. Быстрая проверка нового объекта указывает, произошли ли какие-либо проблемы при создания нового экземпляра.

  2. Инициализация объекта CChkSGFiles.

    Call( pcchecksgfiles->ErrInit(
    rgwszDb,
    cDb,
    wszLogPath,
    wszBaseName ) );
    

    Дополнительные сведения о параметрах см. в функции CChkSGFiles.ErrInit.

  3. Используйте функцию CChkSGFiles.ErrCheckDbHeaders для проверки целостности базы данных, проверяя заголовок баз данных.

    err = pcchecksgfiles->ErrCheckDbHeaders(
    &cbDbPageSize,
    &cDbHeaderPages,
    &iDbError );
    if ( CCheckSGFiles::errSuccess != err )
    {
    if ( CCheckSGFiles::iDbInvalid != iDbError )
    {
    printf(
    "ERROR: Database header validation for '%S' failed with error %d (0x%x)\n",
    rgwszDb[ iDbError ],
    err,
    err );
    }
    goto HandleError;
    }
    

    Дополнительные сведения о параметрах см. в функции CChkSGFiles.ErrCheckDbHeaders.

  4. Обработка ошибок и использование функции CChkSGFiles.Delete для удаления класса CChkSGFiles из памяти.

    HandleError:
    CCheckSGFiles::Delete( pcchecksgfiles );  
    

См. также