LogStore.CreateLogArchiveSnapshot Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk