LogStore.CreateLogArchiveSnapshot Método

Definición

Toma una instantánea del estado del almacén de registros necesario para realizar una copia de seguridad.

Sobrecargas

Nombre Description
CreateLogArchiveSnapshot()

Toma una instantánea del estado del almacén de registros para realizar una copia de seguridad.

CreateLogArchiveSnapshot(SequenceNumber, SequenceNumber)

Toma una instantánea del estado del almacén de registros entre los números de secuencia especificados para realizar una copia de seguridad.

CreateLogArchiveSnapshot()

Toma una instantánea del estado del almacén de registros 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

Objeto LogArchiveSnapshot que contiene el estado necesario para realizar un archivo.

Excepciones

El almacén de registros no es archivable.

Se llamó al método después de eliminar la secuencia.

Se produce un error de E/S al crear la instantánea de archivo.

Un argumento no es válido.

Se ha ejecutado una operación no válida.

No hay memoria suficiente para continuar con la ejecución de un programa.

La secuencia de registros está llena.

El sistema operativo deniega el acceso al almacén de registros especificado.

Ejemplos

En el ejemplo siguiente se muestra cómo archivar un LogStore objeto 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 instantánea del estado del almacén de registros 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

Objeto LogArchiveSnapshot que contiene el estado necesario para realizar un archivo.

Excepciones

first o last no está entre la base y los últimos números de secuencia 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 instantánea de archivo.

El almacén de registros no es archivable.

Se llamó al método después de eliminar la secuencia.

No hay memoria suficiente para continuar con la ejecución de un programa.

La secuencia de registros está llena.

El sistema operativo deniega el acceso al almacén de registros especificado.

Comentarios

La instantánea de archivo devuelta desde este método abarca información del número de secuencia base o del número de secuencia de archivo, lo que sea inferior, al último número de secuencia. No es inclusivo para el último número de secuencia, lo que significa que el archivo solo incluye registros hasta , pero no incluido el último. Además, al usar este método, el valor de SequenceNumber de inicio debe ser igual a BaseSequenceNumber para que el archivo sea coherente.

Se aplica a