LogStore.CreateLogArchiveSnapshot Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Erstellt eine Momentaufnahme des Protokollspeicherzustands, der zum Erstellen einer Sicherung erforderlich ist.
Überlädt
| Name | Beschreibung |
|---|---|
| CreateLogArchiveSnapshot() |
Erstellt eine Momentaufnahme des Protokollspeicherstatus zum Erstellen einer Sicherung. |
| CreateLogArchiveSnapshot(SequenceNumber, SequenceNumber) |
Erstellt eine Momentaufnahme des Protokollspeicherzustands zwischen den angegebenen Sequenznummern zum Erstellen einer Sicherung. |
CreateLogArchiveSnapshot()
Erstellt eine Momentaufnahme des Protokollspeicherstatus zum Erstellen einer Sicherung.
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
Gibt zurück
Ein LogArchiveSnapshot Objekt, das den Zustand enthält, der zum Erstellen eines Archivs erforderlich ist.
Ausnahmen
Der Protokollspeicher kann nicht archiviert werden.
Die Methode wurde aufgerufen, nachdem die Sequenz verworfen wurde.
Beim Erstellen der Archivmomentaufnahme tritt ein E/A-Fehler auf.
Ein Argument ist ungültig.
Ein ungültiger Vorgang wurde ausgeführt.
Es ist nicht genügend Arbeitsspeicher vorhanden, um die Ausführung eines Programms fortzusetzen.
Die Datensatzsequenz ist voll.
Der Zugriff auf den angegebenen Protokollspeicher wird vom Betriebssystem verweigert.
Beispiele
Das folgende Beispiel zeigt, wie sie ein LogStore XML-Dokument archivieren.
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
Gilt für:
CreateLogArchiveSnapshot(SequenceNumber, SequenceNumber)
Erstellt eine Momentaufnahme des Protokollspeicherzustands zwischen den angegebenen Sequenznummern zum Erstellen einer Sicherung.
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
Die Startsequenznummer im zu archivierenden Bereich.
- last
- SequenceNumber
Die endende Sequenznummer im zu archivierenden Bereich.
Gibt zurück
Ein LogArchiveSnapshot Objekt, das den Zustand enthält, der zum Erstellen eines Archivs erforderlich ist.
Ausnahmen
first oder last liegt nicht zwischen der Basis- und der letzten Sequenznummer dieser Sequenz.
first ist größer als last.
Ein ungültiger Vorgang wurde ausgeführt.
Beim Erstellen der Archivmomentaufnahme tritt ein E/A-Fehler auf.
Der Protokollspeicher kann nicht archiviert werden.
Die Methode wurde aufgerufen, nachdem die Sequenz verworfen wurde.
Es ist nicht genügend Arbeitsspeicher vorhanden, um die Ausführung eines Programms fortzusetzen.
Die Datensatzsequenz ist voll.
Der Zugriff auf den angegebenen Protokollspeicher wird vom Betriebssystem verweigert.
Hinweise
Die von dieser Methode zurückgegebene Archivmomentaufnahme umfasst Informationen aus der Basissequenznummer oder der Archivsequenznummer, je nachdem, welcher Wert niedriger ist, auf die letzte Sequenznummer. Es ist nicht inklusive für die letzte Sequenznummer, was bedeutet, dass das Archiv nur Datensätze bis zu, aber nicht zuletzt enthält. Darüber hinaus muss bei Verwendung dieser Methode der Startsequenzwert gleich der BaseSequenceNumber sein, damit das Archiv konsistent ist.