LogStore.CreateLogArchiveSnapshot Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Crea uno snapshot dello stato dell'archivio log necessario per eseguire un backup.
Overload
| Nome | Descrizione |
|---|---|
| CreateLogArchiveSnapshot() |
Crea uno snapshot dello stato dell'archivio log per eseguire un backup. |
| CreateLogArchiveSnapshot(SequenceNumber, SequenceNumber) |
Crea uno snapshot dello stato dell'archivio log tra i numeri di sequenza specificati per eseguire un backup. |
CreateLogArchiveSnapshot()
Crea uno snapshot dello stato dell'archivio log per eseguire un backup.
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
Valori restituiti
Oggetto LogArchiveSnapshot che contiene lo stato necessario per creare un archivio.
Eccezioni
L'archivio log non è archiviabile.
Il metodo è stato chiamato dopo che la sequenza è stata eliminata.
Si verifica un errore di I/O durante la creazione dello snapshot di archivio.
Un argomento non è valido.
È stata eseguita un'operazione non valida.
Memoria insufficiente per continuare l'esecuzione di un programma.
La sequenza di record è piena.
L'accesso per l'archivio log specificato viene negato dal sistema operativo.
Esempio
Nell'esempio seguente viene illustrato come archiviare un oggetto LogStore in un documento 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
Si applica a
CreateLogArchiveSnapshot(SequenceNumber, SequenceNumber)
Crea uno snapshot dello stato dell'archivio log tra i numeri di sequenza specificati per eseguire un backup.
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
Parametri
- first
- SequenceNumber
Numero di sequenza iniziale nell'intervallo da archiviare.
- last
- SequenceNumber
Numero di sequenza finale nell'intervallo da archiviare.
Valori restituiti
Oggetto LogArchiveSnapshot che contiene lo stato necessario per creare un archivio.
Eccezioni
first o last non è compreso tra il numero di base e l'ultimo numero di sequenza di questa sequenza.
first è maggiore di last.
È stata eseguita un'operazione non valida.
Si verifica un errore di I/O durante la creazione dello snapshot di archivio.
L'archivio log non è archiviabile.
Il metodo è stato chiamato dopo che la sequenza è stata eliminata.
Memoria insufficiente per continuare l'esecuzione di un programma.
La sequenza di record è piena.
L'accesso per l'archivio log specificato viene negato dal sistema operativo.
Commenti
Lo snapshot dell'archivio restituito da questo metodo include informazioni dal numero di sequenza di base o dal numero di sequenza di archiviazione, a condizione che sia inferiore, all'ultimo numero di sequenza. Non è inclusivo per l'ultimo numero di sequenza, il che significa che l'archivio include solo i record fino a ma non include l'ultimo. Inoltre, quando si usa questo metodo, l'oggetto SequenceNumber iniziale deve essere uguale a BaseSequenceNumber affinché l'archivio sia coerente.