Validación de la integridad de copia de seguridad mediante la API CHKSGFILES en Exchange 2013

Descubra cómo usar la API CHKSGFILES para validar una copia de seguridad del almacén de Exchange en Exchange 2013.

Se aplica a: Exchange Server 2013

Durante las operaciones de copia de seguridad administradas por el servicio de instantáneas de volumen (VSS), Exchange Server 2013 no puede leer todos los archivos de base de datos en su totalidad y comprobar su integridad de suma de comprobación. Por lo tanto, es posible que desee que la aplicación de copia de seguridad compruebe la integridad del archivo de registro de transacciones y la base de datos. Se recomienda que la aplicación de copia de seguridad compruebe la coherencia física del conjunto de instantáneas antes de informar al escritor de Exchange de que la copia de seguridad está completa. Después de realizar una copia de seguridad correcta, el almacén de Exchange actualiza los encabezados de las bases de datos de copia de seguridad para reflejar las últimas horas de copia de seguridad correctas y quita los registros de transacciones del servidor que ya no son necesarios para revertir desde la última copia de seguridad correcta.

Requisitos previos para validar la integridad de copia de seguridad

Para que la aplicación pueda validar la integridad de la copia de seguridad, debe tener acceso a lo siguiente:

  • Archivos de la copia de seguridad del almacén de Exchange.
  • Una versión de Visual Studio a partir de Visual Studio 2010.
  • Archivos de encabezado y biblioteca CHKSGFILES. Puede descargar la biblioteca y los archivos de encabezado desde el Centro de descarga de Microsoft.

Validación de la integridad de la copia de seguridad

En el procedimiento siguiente se describe cómo validar la integridad de los datos en la aplicación de copia de seguridad y restauración.

Para validar la integridad de la copia de seguridad

  1. Cree una nueva instancia de la clase 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;
    }
    

    Las primeras líneas de código crean un objeto de error y establecen su valor inicial en correcto y crean un objeto que comprueba la validez de la base de datos. A continuación, la función CChkSGFiles.New crea una nueva instancia de la clase CChkSGFiles . Una comprobación rápida del nuevo objeto indica si se produjo algún problema al crear la nueva instancia.

  2. Inicialice el objeto CChkSGFiles .

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

    Para obtener más información sobre los parámetros, vea función CChkSGFiles.ErrInit.

  3. Use la función CChkSGFiles.ErrCheckDbHeaders para validar la integridad de la base de datos comprobando los encabezados de base de datos.

    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 obtener más información sobre los parámetros, vea función CChkSGFiles.ErrCheckDbHeaders.

  4. Controle los errores y use la función CChkSGFiles.Delete para quitar la clase CChkSGFiles de la memoria.

    HandleError:
    CCheckSGFiles::Delete( pcchecksgfiles );  
    

Vea también