class NsOperationSummary

La classe NsOperationSummary résume l'exécution d'une opération transactionelle sur le serveur de sauvegarde.

Utilisez cette classe lorsque vous désirez obtenir des informations sur l'exécution des opérations de sauvegarde, restauration, réinitialisation ou suppression effectuées depuis l'agent client. Toute opération, qu'elle soit lancée manuellement ou de manière planifiée par le client, ainsi que les exécutions issues des plans d'exécutions et des demandes d'exécution serveur, se voit rajouter une entrée de type NsOperationSummary.

Depuis la version 8 du logiciel, les opérations de sauvegarde locale et d'extraction de données sont également mémorisées et modélisées par cette classe.

Pour consommer un volume raisonnable de la base de données, les objets de type NsOperationSummary sont conservés durant une durée choisie par l'administrateur et accessible via la propriété TimeResolution de la classe NsServer. Au delà de cette durée, ces informations sont automatiquement supprimées par le serveur de sauvegarde.

ID : __int64 readonly

L'identificateur unique du résumé de l'opération.

ServerBackupID : __int64 readonly

L'identificateur de la sauvegarde serveur (NsBackup) concernée par l'exécution, -1 sinon.

LocalBackupID : __int64 readonly

L'identificateur de la sauvegarde local (NsLocalBackup) concernée par l'exécution, -1 sinon.

BackupCommitID : __int64 readonly

L'identificateur de l'opération en base de données (NsBackupCommit) ayant modifié les fichiers.

ExecPlanOperationID : __int64 readonly

L'identificateur de l'objet NsExecPlanOperation dans le contexte duquel s'est exécuté la tâche, si celle-ci l'a été dans le contexte d'un plan d'exécution, -1 sinon.

DataAccessLogEntryID : __int64 readonly

L'identificateur de l'objet NsDataAccessLogEntry contenant les informations sur les fichiers accédés par l'opération le cas échéant, -1 sinon.

BackupName : BSTR readonly

Le nom de la sauvegarde concernée par l'opération. Ce champ permet d'obtenir une information minimale sur la sauvegarde, même si celle-ci a été supprimée du serveur depuis l'exécution (dans ce cas, le champ BackupID ne pointe plus vers un objet valide dont les informations peuvent être examinées).

ExecSource : enum NsExecSource readonly

La source d'exécution ayant initié l'opération.

Platform : enum NsPlatformType readonly

La plateforme cliente ayant exécuté l'opération.

UserID : __int64 readonly

L'identificateur de l'utilisateur (NsUser) ayant initié l'exécution.

TransactionType : enum NsTransactionType readonly

Le type de la transaction effectuée.

StartDate : VARIANT readonly

La date de début de l'opération, au format UTC.

ValidationDate : VARIANT readonly

La date de fin de l'opération, au format UTC.

Flags : long readonly

Réservé.

Terminaison : enum NsTransactionTerminaisonType readonly

Le type de terminaison de l'opération.

IsCDPOperation : VARIANT_BOOL readonly

Une variable booléenne indiquant si l'opération a été réalisée dans le cadre d'une opération de sauvegarde continue.

DeleteCount : __int64 readonly

Le nombre de fichiers supprimés.

UpdateCount : __int64 readonly

Le nombre de fichiers mis à jour.

ErrorsCount : __int64 readonly

Le nombre d'erreurs.

SentBytes : __int64 readonly

Le nombre d'octets envoyés.

RecvBytes : __int64 readonly

Le nombre d'octets reçus.

IOTime : __int64 readonly

Le nombre de millisecondes passées à envoyer ou recevoir des données durant l'opération.

CommitTime : __int64 readonly

Le nombre de millisecondes passées valider l'opération sur le serveur (fichiers et base de données).

DeltaRatio : long readonly

Le pourcentage (blocs de données réutilisés / nombre total de blocs) au niveau global de la transaction. Plus cette valeur tends vers 100, plus cela signifie que des données sur le serveur ont pu être réutilisées pour construire les fichiers à sauvegarder

BackupRestoreSessionID : __int64 readonly

Un numéro interne identifiant la séquence d'opérations effectuée sur la sauvegarde jusqu'à qu'elle se complète. Les opérations successives ne se terminant pas correctement partagent la même valeur de BackupRestoreSessionID. Lorsqu'une opération effectuée sur la sauvegarde va à son terme, cette valeur est incrémentée et AttemptNumber est réinitialisé à zéro.

AttemptNumber : long readonly

Un numéro de tentative, réinitialisé à chaque fois qu'une operation sur la sauvegarde va jusqu'à son terme, incrémenté dans le cas contraire.

VARIANT_BOOL LoadFromID(NsConnection Connection, __int64 OperationID)

Charge en mémoire le résumé de l'opération possédant l'identificateur OperationID

VARIANT_BOOL GetOperationReportAsText(NsConnection Connection, BSTR FilePath)

Récupère le rapport de l'opération mis en forme par le serveur, au format texte, et le place à l'emplacement spécifié par FilePath.

VARIANT_BOOL GetOperationReport(NsConnection Connection, NsReportRenderer Renderer, BSTR FilePath)

Récupère le rapport de l'opération mis en forme par le serveur, au format spécifié par Renderer, et le place à l'emplacement spécifié par FilePath.

Téléchargement de tous les rapports d'exécution pour une sauvegarde donnée

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

nsTransactionTypeBackup	= 1

' Renvoit une sauvegarde à partir de son nom
Function FindBackupByName(backups, name)
  set FindBackupByName = Nothing

  for each backup in backups
    if StrComp(backup.Name, name, vbTextCompare) = 0 then
      set FindBackupByName = backup
      Exit Function
    end if
  next
End Function

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

  if server.Load(connection) then ' Chargement des infos serveur
    ' Demander un nom de sauvegarde
    backupName = InputBox("Saisissez le nom d'une sauvegarde sur le serveur (ex : Ma sauvegarde) : ", "Test de l'API UB", "")

    ' L'utilisateur a t-il saisi un nom de backup ?
    if backupName <> "" then
      set backup = FindBackupByName(server.AllBackups(connection), backupName)

      ' Est ce qu'on a bien trouvé une sauvegarde valide ?
      if backup is Nothing then
        MsgBox "Erreur : la sauvegarde """ & backupName & """ n'a pu être trouvée sur le serveur."
      else
        reportsPath = ""
        ' Récupérer tous les événements enregistrés pour la sauvegarde
        set eventList = backup.History(connection, 0)

        ' Demander à l'utilisateur un dossier où stocker les rapports de sauvegarde
        set objShell  = CreateObject("Shell.Application")
        set objFolder = objShell.BrowseForFolder(0, "Selectionnez un dossier ou stocker les rapports : ", 0, "")
        if IsObject(objfolder) Then reportsPath = objFolder.Self.Path

        ' Si le chemin des rapports a bien été choisi...
        if reportsPath <> "" then
          set fso = CreateObject("Scripting.FileSystemObject")
          for each evt in eventList ' Pour chaque événement enregistré...
            if evt.TransactionType = nsTransactionTypeBackup then ' Si l'opération était une sauvegarde...
              dateOfEvent = sysutils.UTCToLocal(evt.ValidationDate) ' On obtient la date locale à partir de la date UTC
              ' Construire le chemin de stockage du rapport
              reportLocation = fso.BuildPath(reportsPath, evt.BackupName & " - " & Day(dateOfEvent) & "_" & Month(dateOfEvent) & "_" & Year(dateOfEvent) & " - " & Hour(dateOfEvent) & "h " & Minute(dateOfEvent) & ".txt")
              ' Téléchargement du rapport !
              if not evt.GetOperationReportAsText(connection, reportLocation) then
                MsgBox "Erreur lors du téléchargement de l'opération #" & sysutils.Int64ToStr(evt.ID)
              end if
            end if
          next
        end if
      end if
    end if
  else
    MsgBox "Impossible de charger les informations serveur."
  end if

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