class NsBackupVerification

La classe NsBackupVerification représente une vérification programmée, en cours, ou terminée pour une sauvegarde donnée.

Les vérifications peuvent être déclenchées automatiquement par la serveur ou manuellement par les administrateurs. Elles sont créees sur le serveur en utilisant la méthode RequestVerification de l'objet NsBackup à vérifier.

ID : __int64 readonly

L'identificateur unique de la vérification.

BackupID : __int64 readonly

L'identificateur unique de la sauvegarde (NsBackup) à laquelle s'applique la vérification.

RequestSource : enum NsBackupVerificationSource readonly

La source de la requête.

RequestDate : VARIANT readonly

La date de demande de vérification, au format UTC.

CheckMode : enum NsCheckMode readonly

Le mode de vérification.

Options : long readonly

Les options de vérification. Les options suivantes peuvent être présentes :

  • THVFYOPTION_AUTOREPAIR = 1 : Si nécessaire, la réparation doit être effectuée directement par le serveur sans validation manuelle.
  • THVFYOPTION_RUNBACKUPAFTERREPAIR = 2 : La sauvegarde réparée sera relancée si nécessaire pour faire remonter les éventuels fichiers révoqués.

Priority : long readonly

Un nombre entre 1 et 100 représentant la priorité de la vérification.

State : enum NsBackupVerificationState readonly

L'état de la vérification au moment du chargement de la structure.

StartDate : VARIANT readonly

La date de début de vérification, si elle a commencée.

EndDate : VARIANT readonly

La date de fin de vérification, si elle est terminée.

TestedFiles : __int64 readonly

Le nombre de fichiers testés.

DamagedFiles : __int64 readonly

Le nombre de fichiers référencés par la base de données considérés comme endommagés par le serveur.

ForeignFiles : __int64 readonly

Le nombre de fichiers non-référencés par la base de données présents sur le serveur.

RepairNeeded : VARIANT_BOOL readonly

Une variable booléenne indiquant si la sauvegarde vérifiée possède des erreurs et doit-être réparée.

IsWaitingForRepairOrder : VARIANT_BOOL readonly

Une variable booléenne indiquant si la sauvegarde attend d'être réparée. Tant qu'une sauvegarde nécessitant réparation n'est pas réparée, celle-ci est vérouillée et ne peut être exploitée par les utilisateurs.

VARIANT_BOOL LoadFromID(NsConnection Connection, __int64 VerificationID)

Charge en mémoire la vérification VerificationID.

VARIANT_BOOL Cancel(NsConnection Connection)

Annule l'exécution de la vérification.

VARIANT_BOOL Repair(NsConnection Connection, VARIANT_BOOL RunBackupAfterRepair)

Démarre la réparation, lorsque l'état de la vérification vaut bvStateAnalysisCompleted et que RepairNeeded vaut true.

VARIANT_BOOL Refresh(NsConnection Connection)

Mets à jour les indicateurs d'une vérification précédemment chargée.

VARIANT_BOOL Delete(NsConnection Connection)

Supprime la vérification. Si elle est en cours d'exécution, elle doit être au préalablement annulée à l'aide de la méthode Cancel().

Valide toutes les sauvegardes vérifiées en attente de réparation

Set connection = CreateObject("NsAPI.NsConnection")
Set sysutils = CreateObject("NsAPI.NsScriptUtils")

if connection.ConnectToLocalServer then
  set server = CreateObject("NsAPI.NsServer")

  if server.Load(connection) then
    ' Récupérer toutes les vérifications actives sur le serveur.
    set allVerifications = server.Verifications(connection)
    
    for each verification in allVerifications
      ' Pour chaque vérification...
      if verification.IsWaitingForRepairOrder then
        ' ...Est-ce que des erreurs ont été rencontrées nécessitant réparation ?
        set verifiedBackup = CreateObject("NsAPI.NsBackup")
        ' Créer un objet NsBackup pour récupérer le nom de la sauvegarde.
        if verifiedBackup.LoadFromID(connection, verification.BackupID) then
          ' Demander à l'utilisateur s'il souhaite démarrer la réparation.
          if MsgBox("La sauvegarde """ & verifiedBackup.Name & """ est en attente de réparation. Souhaitez-vous lancer la réparation maintenant ?",vbQuestion + vbYesNo + vbApplicationModal) = vbYes Then
            ' Ordre de réparation acquitté avec succès ?
            if not verification.Repair(connection, True) then
              ' Echec : afficher un message
              MsgBox "Une erreur est survenue durant la demande de réparation.", vbCritical + vbOkOnly
            end if
          end if
        end if
      end if
    next
  else
    MsgBox "Impossible de charger les informations serveur."
  end if

  connection.Disconnect
else
  MsgBox "Connexion au serveur local impossible."
end if

Vérifie toutes les sauvegardes non vérifiées depuis 7 jours

Set connection = CreateObject("NsAPI.NsConnection")
Set sysutils = CreateObject("NsAPI.NsScriptUtils")

const nsCheckModeIntegrityDeep = 4

numberOfBackups = 0

if connection.ConnectToLocalServer then
  set server = CreateObject("NsAPI.NsServer")

  if server.Load(connection) then
    ' Récupérer toutes les sauvegardes sur le server
    set allBackups = server.AllBackups(connection)

    ' Pour chaque sauvegarde...
    for each backup in allBackups
      ' Si la dernière vérification date de plus de 7 jours...
      if DateDiff("d", backup.LastVerificationDate, Now) > 7 then
        ' Demander la vérification de la sauvegarde. Si RequestVerification() renvoie
        ' un objet non initialisé cela signifie qu'une erreur s'est produite durant la demande de vérification.
         set verification = backup.RequestVerification(connection, nsCheckModeIntegrityDeep)
         if verification is nothing then
           MsgBox "Impossible de vérifier la sauvegarde """ & verifiedBackup.Name & """ (consultez les journaux serveur)",vbQuestion + vbYesNo + vbApplicationModal
         else
           numberOfBackups = numberOfBackups + 1
         end if
      end if
    next

    ' Afficher le nombre de sauvegardes marquées à vérifier
    MsgBox numberOfBackups & " sauvegarde(s) ont été marquées à vérifier."
  else
    MsgBox "Impossible de charger les informations serveur."
  end if

  connection.Disconnect
else
  MsgBox "Connexion au serveur local impossible."
end if