Share via


LogStore.CreateLogArchiveSnapshot Metode

Definisi

Mengambil rekam jepret dari status penyimpanan log yang diperlukan untuk membuat cadangan.

Overload

CreateLogArchiveSnapshot()

Mengambil rekam jepret status penyimpanan log untuk membuat cadangan.

CreateLogArchiveSnapshot(SequenceNumber, SequenceNumber)

Mengambil rekam jepret status penyimpanan log antara nomor urutan yang ditentukan untuk membuat cadangan.

CreateLogArchiveSnapshot()

Mengambil rekam jepret status penyimpanan log untuk membuat cadangan.

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

Mengembalikan

Objek LogArchiveSnapshot yang berisi status yang diperlukan untuk membuat arsip.

Pengecualian

Penyimpanan log tidak dapat diarsipkan.

Metode ini dipanggil setelah urutan dibuang.

Kesalahan I/O terjadi saat membuat rekam jepret arsip.

Argumen tidak valid.

Operasi yang tidak valid telah dijalankan.

Memori tidak cukup untuk melanjutkan eksekusi program.

Urutan rekaman penuh.

Akses untuk penyimpanan log yang ditentukan ditolak oleh sistem operasi.

Contoh

Contoh berikut menunjukkan cara mengarsipkan LogStore ke dokumen 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

Berlaku untuk

CreateLogArchiveSnapshot(SequenceNumber, SequenceNumber)

Mengambil rekam jepret status penyimpanan log antara nomor urutan yang ditentukan untuk membuat cadangan.

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

Parameter

first
SequenceNumber

Nomor urutan awal dalam rentang untuk diarsipkan.

last
SequenceNumber

Nomor urutan akhir dalam rentang untuk diarsipkan.

Mengembalikan

Objek LogArchiveSnapshot yang berisi status yang diperlukan untuk membuat arsip.

Pengecualian

first atau last bukan antara nomor urutan dasar dan terakhir dari urutan ini.

first lebih besar dari last.

Operasi yang tidak valid telah dijalankan.

Kesalahan I/O terjadi saat membuat rekam jepret arsip.

Penyimpanan log tidak dapat diarsipkan.

Metode ini dipanggil setelah urutan dibuang.

Memori tidak cukup untuk melanjutkan eksekusi program.

Urutan rekaman penuh.

Akses untuk penyimpanan log yang ditentukan ditolak oleh sistem operasi.

Keterangan

Rekam jepret arsip yang dikembalikan dari metode ini mencakup informasi dari nomor urutan dasar atau nomor urutan arsip, mana pun yang lebih rendah, ke nomor urutan terakhir. Ini tidak inklusif untuk nomor urutan terakhir, yang berarti bahwa arsip hanya menyertakan rekaman hingga tetapi tidak termasuk yang terakhir. Selain itu, saat menggunakan metode ini, Awal SequenceNumber harus sama dengan BaseSequenceNumber agar arsip konsisten.

Berlaku untuk