LogStore.CreateLogArchiveSnapshot Yöntem

Tanım

Yedekleme yapmak için gereken günlük deposu durumunun anlık görüntüsünü alır.

Aşırı Yüklemeler

CreateLogArchiveSnapshot()

Yedekleme yapmak için günlük deposu durumunun anlık görüntüsünü alır.

CreateLogArchiveSnapshot(SequenceNumber, SequenceNumber)

Yedekleme yapmak için belirtilen sıra numaraları arasında günlük deposu durumunun anlık görüntüsünü alır.

CreateLogArchiveSnapshot()

Yedekleme yapmak için günlük deposu durumunun anlık görüntüsünü alır.

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

Döndürülenler

Arşiv LogArchiveSnapshot oluşturmak için gereken durumu içeren nesne.

Özel durumlar

Günlük deposu arşivlenebilir değil.

yöntemi, sıra atıldıktan sonra çağrıldı.

Arşiv anlık görüntüsü oluşturulurken G/Ç hatası oluşur.

Bağımsız değişken geçerli değil.

Geçersiz bir işlem yürütüldü.

Bir programın yürütülmesine devam etmek için yeterli bellek yok.

Kayıt sırası dolu.

Belirtilen günlük deposuna erişim işletim sistemi tarafından reddedildi.

Örnekler

Aşağıdaki örnekte, bir LogStore XML belgesine arşivlemeyi gösterir.

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

Şunlara uygulanır

CreateLogArchiveSnapshot(SequenceNumber, SequenceNumber)

Yedekleme yapmak için belirtilen sıra numaraları arasında günlük deposu durumunun anlık görüntüsünü alır.

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

Parametreler

first
SequenceNumber

Arşiv aralığındaki başlangıç sırası numarası.

last
SequenceNumber

Arşiv aralığındaki bitiş sırası numarası.

Döndürülenler

Arşiv LogArchiveSnapshot oluşturmak için gereken durumu içeren nesne.

Özel durumlar

first veya last bu dizinin temel ve son sıra numaraları arasında değildir.

first değerinden lastbüyüktür.

Geçersiz bir işlem yürütüldü.

Arşiv anlık görüntüsü oluşturulurken G/Ç hatası oluşur.

Günlük deposu arşivlenebilir değil.

yöntemi, sıra atıldıktan sonra çağrıldı.

Bir programın yürütülmesine devam etmek için yeterli bellek yok.

Kayıt sırası dolu.

Belirtilen günlük deposuna erişim işletim sistemi tarafından reddedildi.

Açıklamalar

Bu yöntemden döndürülen arşiv anlık görüntüsü, temel sıra numarasından veya arşiv dizisi numarasından (hangisi daha düşükse) son sıra numarasına kadar olan bilgileri kapsar. Son sıra numarası için bu dahil değildir; başka bir deyişle arşiv yalnızca en sona kadar olan kayıtları içerir ancak son dahil değildir. Ayrıca, bu yöntemi kullanırken, arşivin tutarlı olması için start SequenceNumber değerinin BaseSequenceNumber değerine eşit olması gerekir.

Şunlara uygulanır