LogStore.CreateLogArchiveSnapshot Methode

Definitie

Maakt een momentopname van de logboekopslagstatus die nodig is om een back-up te maken.

Overloads

Name Description
CreateLogArchiveSnapshot()

Maakt een momentopname van de status van het logboekarchief voor het maken van een back-up.

CreateLogArchiveSnapshot(SequenceNumber, SequenceNumber)

Maakt een momentopname van de status van het logboekarchief tussen de opgegeven reeksnummers voor het maken van een back-up.

CreateLogArchiveSnapshot()

Maakt een momentopname van de status van het logboekarchief voor het maken van een back-up.

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

Retouren

Een LogArchiveSnapshot object dat de status bevat die nodig is om een archief te maken.

Uitzonderingen

Het logboekarchief kan niet worden gearchiveerd.

De methode is aangeroepen nadat de reeks is verwijderd.

Er treedt een I/O-fout op bij het maken van de archiefmomentopname.

Een argument is ongeldig.

Er is een ongeldige bewerking uitgevoerd.

Er is onvoldoende geheugen om de uitvoering van een programma voort te zetten.

De recordreeks is vol.

De toegang voor het opgegeven logboekarchief wordt geweigerd door het besturingssysteem.

Voorbeelden

In het volgende voorbeeld ziet u hoe u een LogStore xml-document kunt archiveren.

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

Van toepassing op

CreateLogArchiveSnapshot(SequenceNumber, SequenceNumber)

Maakt een momentopname van de status van het logboekarchief tussen de opgegeven reeksnummers voor het maken van een back-up.

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

Parameters

first
SequenceNumber

Het beginvolgnummer in het bereik dat moet worden gearchiveerd.

last
SequenceNumber

Het eindvolgnummer in het bereik dat moet worden gearchiveerd.

Retouren

Een LogArchiveSnapshot object dat de status bevat die nodig is om een archief te maken.

Uitzonderingen

first of last zich niet tussen de basis- en laatste reeksnummers van deze reeks bevindt.

first is groter dan last.

Er is een ongeldige bewerking uitgevoerd.

Er treedt een I/O-fout op bij het maken van de archiefmomentopname.

Het logboekarchief kan niet worden gearchiveerd.

De methode is aangeroepen nadat de reeks is verwijderd.

Er is onvoldoende geheugen om de uitvoering van een programma voort te zetten.

De recordreeks is vol.

De toegang voor het opgegeven logboekarchief wordt geweigerd door het besturingssysteem.

Opmerkingen

De archiefmomentopname die door deze methode wordt geretourneerd, omvat informatie van het basisreeksnummer of het archiefreeksnummer, afhankelijk van wat lager is, tot het laatste volgnummer. Het is niet inclusief voor het laatste volgnummer, wat betekent dat het archief alleen records bevat tot maar niet inclusief laatste. Wanneer u deze methode gebruikt, moet het start SequenceNumber bovendien gelijk zijn aan het BaseSequenceNumber om ervoor te zorgen dat het archief consistent is.

Van toepassing op