Partager via


LogStore.CreateLogArchiveSnapshot Méthode

Définition

Prend un instantané de l'état du magasin de journaux nécessaire pour effectuer une sauvegarde.

Surcharges

CreateLogArchiveSnapshot()

Prend un instantané de l'état du magasin de journaux pour effectuer une sauvegarde.

CreateLogArchiveSnapshot(SequenceNumber, SequenceNumber)

Prend un instantané de l'état du magasin de journaux entre les numéros de séquence spécifiés pour effectuer une sauvegarde.

CreateLogArchiveSnapshot()

Prend un instantané de l'état du magasin de journaux pour effectuer une sauvegarde.

public:
 System::IO::Log::LogArchiveSnapshot ^ CreateLogArchiveSnapshot();
public System.IO.Log.LogArchiveSnapshot CreateLogArchiveSnapshot ();
member this.CreateLogArchiveSnapshot : unit -> System.IO.Log.LogArchiveSnapshot
Public Function CreateLogArchiveSnapshot () As LogArchiveSnapshot

Retours

Objet LogArchiveSnapshot qui contient l'état nécessaire pour effectuer un archivage.

Exceptions

Le magasin de journaux n'est pas archivable.

La méthode a été appelée après la suppression de la séquence.

Une erreur d'E/S se produit lors de la création de l'instantané de l'archive.

Un argument n’est pas valide.

Une opération non valide a été exécutée.

La mémoire disponible n'est pas suffisante pour continuer l'exécution d'un programme.

La séquence d'enregistrement est complète.

L'accès pour le magasin de journaux spécifié est refusé par le système d'exploitation.

Exemples

L'exemple suivant montre comment archiver un LogStore dans un document XML.

class LogBackup
{
    static void ArchiveToXML(LogStore logStore, string fileName)
    {
        LogArchiveSnapshot snapshot = logStore.CreateLogArchiveSnapshot();

        XmlTextWriter writer = new XmlTextWriter(fileName, Encoding.ASCII);

        writer.WriteStartElement("logArchive");
        foreach(FileRegion region in snapshot.ArchiveRegions)
        {
            writer.WriteStartElement("fileRegion");
            writer.WriteElementString("path", region.Path);
            writer.WriteElementString("length", region.FileLength.ToString());
            writer.WriteElementString("offset", region.Offset.ToString());
            using(Stream dataStream = region.GetStream())
            {
                byte[] data = new byte[dataStream.Length];
                dataStream.Read(data, 0, data.Length);
                writer.WriteElementString("data", Convert.ToBase64String(data));
            }
            writer.WriteEndElement();
        }
        writer.WriteEndElement();
        writer.Close();
        logStore.SetArchiveTail(snapshot.LastSequenceNumber);
    }
    static void RestoreFromXML(string fileName)
    {
        using(XmlTextReader reader = new XmlTextReader(fileName))
        {
            reader.ReadStartElement("logArchive");
            while(reader.IsStartElement())
            {
                string path = reader.ReadElementString("path");
                long length = Int64.Parse(reader.ReadElementString("length"));
                long offset = Int64.Parse(reader.ReadElementString("offset"));
                string dataString = reader.ReadElementString("data");
                byte[] data = Convert.FromBase64String(dataString);
                FileStream fileStream;
                using(fileStream = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write))
                {
                    fileStream.SetLength(length);
                    fileStream.Position = offset; fileStream.Write(data, 0, data.Length);
                }
            }
        reader.ReadEndElement();
        }
    }
}
Friend Class LogBackup
    Private Shared Sub ArchiveToXML(ByVal logStore As LogStore, ByVal fileName As String)
        Dim snapshot As LogArchiveSnapshot = logStore.CreateLogArchiveSnapshot()

        Dim writer As New XmlTextWriter(fileName, Encoding.ASCII)

        writer.WriteStartElement("logArchive")
        For Each region As FileRegion In snapshot.ArchiveRegions
            writer.WriteStartElement("fileRegion")
            writer.WriteElementString("path", region.Path)
            writer.WriteElementString("length", region.FileLength.ToString())
            writer.WriteElementString("offset", region.Offset.ToString())
            Using dataStream As Stream = region.GetStream()
                Dim data(dataStream.Length - 1) As Byte
                dataStream.Read(data, 0, data.Length)
                writer.WriteElementString("data", Convert.ToBase64String(data))
            End Using
            writer.WriteEndElement()
        Next region
        writer.WriteEndElement()
        writer.Close()
        logStore.SetArchiveTail(snapshot.LastSequenceNumber)

    End Sub
    Private Shared Sub RestoreFromXML(ByVal fileName As String)
        Using reader As New XmlTextReader(fileName)
            reader.ReadStartElement("logArchive")
            Do While reader.IsStartElement()
                Dim path = reader.ReadElementString("path")
                Dim length = Int64.Parse(reader.ReadElementString("length"))
                Dim offset = Int64.Parse(reader.ReadElementString("offset"))
                Dim dataString = reader.ReadElementString("data")
                Dim data() = Convert.FromBase64String(dataString)
                Dim fileStream As FileStream
                fileStream = New FileStream(path, FileMode.OpenOrCreate, FileAccess.Write)
                Using fileStream
                    fileStream.SetLength(length)
                    fileStream.Position = offset
                    fileStream.Write(data, 0, data.Length)
                End Using
            Loop
            reader.ReadEndElement()
        End Using
    End Sub
End Class

S’applique à

CreateLogArchiveSnapshot(SequenceNumber, SequenceNumber)

Prend un instantané de l'état du magasin de journaux entre les numéros de séquence spécifiés pour effectuer une sauvegarde.

public:
 System::IO::Log::LogArchiveSnapshot ^ CreateLogArchiveSnapshot(System::IO::Log::SequenceNumber first, System::IO::Log::SequenceNumber last);
public System.IO.Log.LogArchiveSnapshot CreateLogArchiveSnapshot (System.IO.Log.SequenceNumber first, System.IO.Log.SequenceNumber last);
member this.CreateLogArchiveSnapshot : System.IO.Log.SequenceNumber * System.IO.Log.SequenceNumber -> System.IO.Log.LogArchiveSnapshot
Public Function CreateLogArchiveSnapshot (first As SequenceNumber, last As SequenceNumber) As LogArchiveSnapshot

Paramètres

first
SequenceNumber

Numéro de séquence de lancement dans la plage à archiver.

last
SequenceNumber

Numéro de séquence de fin dans la plage à archiver.

Retours

Objet LogArchiveSnapshot qui contient l'état nécessaire pour effectuer un archivage.

Exceptions

first ou last n'est pas compris entre le numéro de base et les derniers numéros de cette séquence.

first est supérieur à last.

Une opération non valide a été exécutée.

Une erreur d'E/S se produit lors de la création de l'instantané de l'archive.

Le magasin de journaux n'est pas archivable.

La méthode a été appelée après la suppression de la séquence.

La mémoire disponible n'est pas suffisante pour continuer l'exécution d'un programme.

La séquence d'enregistrement est complète.

L'accès pour le magasin de journaux spécifié est refusé par le système d'exploitation.

Remarques

L'instantané d'archive retourné à partir de cette méthode comprend des informations à partir du numéro de séquence de base ou du numéro de séquence d'archive (en fonction du numéro le plus petit) jusqu'au dernier numéro de séquence. Il n'est pas inclusif pour le dernier numéro de séquence, ce qui signifie que l'archive inclut seulement les enregistrements jusqu'au dernier numéro de séquence sans inclure ce dernier. De plus, lorsque cette méthode est utilisée, le SequenceNumber de départ doit être égal au BaseSequenceNumber pour que l'archive soit cohérente.

S’applique à