Partager via


Valider l’intégrité de la sauvegarde à l’aide de l’API CHKSGFILES dans Exchange 2013

Découvrez comment utiliser l’API CHKSGFILES pour valider une sauvegarde du magasin Exchange dans Exchange 2013.

S’applique à : Exchange Server 2013

Pendant les opérations de sauvegarde gérées par le service VSS (Volume Shadow Copy Service), Exchange Server 2013 ne peut pas lire chaque fichier de base de données dans son intégralité et vérifier son intégrité de somme de contrôle. Par conséquent, vous pouvez souhaiter que votre application de sauvegarde vérifie l’intégrité de la base de données et du fichier journal des transactions. Nous vous recommandons de vérifier la cohérence physique du jeu de clichés instantanés avant d’informer l’enregistreur Exchange que la sauvegarde est terminée. Après une sauvegarde réussie, le magasin Exchange met à jour les en-têtes des bases de données sauvegardées pour refléter les dernières heures de sauvegarde réussies et supprime les journaux des transactions du serveur qui ne sont plus nécessaires pour effectuer une restauration par progression à partir de la dernière sauvegarde réussie.

Conditions préalables à la validation de l’intégrité des sauvegardes

Avant que votre application puisse valider l’intégrité de votre sauvegarde, vous devez avoir accès aux éléments suivants :

  • Fichiers de votre sauvegarde de magasin Exchange.
  • Version de Visual Studio commençant par Visual Studio 2010.
  • Bibliothèque et fichiers d’en-tête CHKSGFILES. Vous pouvez télécharger la bibliothèque et les fichiers d’en-tête à partir du Centre de téléchargement Microsoft.

Valider l’intégrité de la sauvegarde

La procédure suivante décrit comment valider l’intégrité des données dans votre application de sauvegarde et de restauration.

Pour valider l’intégrité de la sauvegarde

  1. Créez une instance de la 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;
    }
    

    Les premières lignes de code créent un objet d’erreur et définissent sa valeur initiale sur success, puis créent un objet qui vérifie la validité de la base de données. Ensuite, la fonction CChkSGFiles.New crée une instance de la classe CChkSGFiles . Une vérification rapide du nouvel objet indique si des problèmes se sont produits lors de la création de la nouvelle instance.

  2. Initialisez l’objet CChkSGFiles .

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

    Pour plus d’informations sur les paramètres, consultez La fonction CChkSGFiles.ErrInit.

  3. Utilisez la fonction CChkSGFiles.ErrCheckDbHeaders pour valider l’intégrité de la base de données en vérifiant les en-têtes de base de données.

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

    Pour plus d’informations sur les paramètres, consultez Fonction CChkSGFiles.ErrCheckDbHeaders.

  4. Gérez les erreurs et utilisez la fonction CChkSGFiles.Delete pour supprimer la classe CChkSGFiles de la mémoire.

    HandleError:
    CCheckSGFiles::Delete( pcchecksgfiles );  
    

Voir aussi