LogStore.CreateLogArchiveSnapshot Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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 last
bü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.