Validar a integridade do backup usando a API CHKSGFILES no Exchange 2013

Descubra como usar a API CHKSGFILES para validar um backup do exchange store no Exchange 2013.

Aplica-se a: Exchange Server 2013

Durante as operações de backup gerenciadas pelo VSS (Serviço de Cópia de Sombra de Volume), Exchange Server 2013 não é possível ler cada arquivo de banco de dados em sua totalidade e verificar sua integridade de soma de verificação. Portanto, talvez você queira que seu aplicativo de backup verifique a integridade do arquivo de log de transações e banco de dados. Recomendamos que seu aplicativo de backup verifique a consistência física do conjunto de cópias de sombra antes de informar ao gravador do Exchange que o backup está concluído. Após um backup bem-sucedido, o exchange store atualiza os cabeçalhos dos bancos de dados de backup para refletir os últimos tempos de backup bem-sucedidos e remove os logs de transação do servidor que não são mais necessários para avançar do último backup bem-sucedido.

Pré-requisitos para validar a integridade do backup

Antes que seu aplicativo possa validar a integridade do backup, você deve ter acesso ao seguinte:

  • Arquivos do backup do Exchange Store.
  • Uma versão do Visual Studio começando com o Visual Studio 2010.
  • Os arquivos de cabeçalho e biblioteca CHKSGFILES. Você pode baixar os arquivos de biblioteca e cabeçalho do Centro de Download da Microsoft.

Validar a integridade do backup

O procedimento a seguir descreve como validar a integridade dos dados em seu aplicativo de backup e restauração.

Para validar a integridade do backup

  1. Crie uma nova instância da classe 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;
    }
    

    As primeiras linhas de código criam um objeto de erro e definem seu valor inicial como êxito e criam um objeto que verifica a validade do banco de dados. Em seguida, a função CChkSGFiles.New cria uma nova instância da classe CChkSGFiles . Uma verificação rápida do novo objeto indica se ocorreram problemas quando a nova instância foi criada.

  2. Inicialize o objeto CChkSGFiles .

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

    Para obter mais informações sobre os parâmetros, consulte a função CChkSGFiles.ErrInit.

  3. Use a função CChkSGFiles.ErrCheckDbHeaders para validar a integridade do banco de dados verificando os cabeçalhos do banco de dados.

    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;
    }
    

    Para obter mais informações sobre os parâmetros, consulte A função CChkSGFiles.ErrCheckDbHeaders.

  4. Manipular erros e usar a função CChkSGFiles.Delete para remover a classe CChkSGFiles da memória.

    HandleError:
    CCheckSGFiles::Delete( pcchecksgfiles );  
    

Confira também