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
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.
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.
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.
Manipular erros e usar a função CChkSGFiles.Delete para remover a classe CChkSGFiles da memória.
HandleError: CCheckSGFiles::Delete( pcchecksgfiles );