LogStore.CreateLogArchiveSnapshot Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Toma una captura del estado del almacén del registro necesaria para realizar una copia de seguridad.
Sobrecargas
CreateLogArchiveSnapshot() |
Toma una captura del estado de almacén de registro para realizar una copia de seguridad. |
CreateLogArchiveSnapshot(SequenceNumber, SequenceNumber) |
Toma una captura del estado de almacén de registro entre los números de secuencia especificados para realizar una copia de seguridad. |
CreateLogArchiveSnapshot()
Toma una captura del estado de almacén de registro para realizar una copia de seguridad.
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
Devoluciones
Un objetoLogArchiveSnapshot que contiene el estado necesario para crear un archivo.
Excepciones
El almacén del registro no se puede archivar.
Se llamó al método una vez eliminada la secuencia.
Se produce un error de E/S al crear la captura del archivo.
Un argumento no es válido.
Se ha ejecutado una operación no válida.
No hay bastante memoria para continuar la ejecución de un programa.
La secuencia del registro está completa.
El acceso al almacén del registro especificado ha sido denegado por el sistema operativo.
Ejemplos
El ejemplo siguiente muestra cómo archivar LogStore en 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
Se aplica a
CreateLogArchiveSnapshot(SequenceNumber, SequenceNumber)
Toma una captura del estado de almacén de registro entre los números de secuencia especificados para realizar una copia de seguridad.
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
Parámetros
- first
- SequenceNumber
Número de secuencia inicial del intervalo que se va a archivar.
- last
- SequenceNumber
Número de secuencia final del intervalo que se va a archivar.
Devoluciones
Un objetoLogArchiveSnapshot que contiene el estado necesario para crear un archivo.
Excepciones
El valor de first
o de last
no está entre los números de secuencia base y último de esta secuencia.
first
es mayor que last
.
Se ha ejecutado una operación no válida.
Se produce un error de E/S al crear la captura del archivo.
El almacén del registro no se puede archivar.
Se llamó al método una vez eliminada la secuencia.
No hay bastante memoria para continuar la ejecución de un programa.
La secuencia del registro está completa.
El acceso al almacén del registro especificado ha sido denegado por el sistema operativo.
Comentarios
La captura del archivo devuelta de este método abarca información o desde el número de secuencia base o desde el número de secuencia del archivo, el que es más bajo, al último número de secuencia. No está incluido para el último número de secuencia, lo cual significa que el archivo sólo incluye los registros hasta el último lugar, sin incluir éste. Además, al utilizar este método, el SequenceNumber del inicio debe ser igual a BaseSequenceNumber para que el archivo sea coherente.