LogStore.CreateLogArchiveSnapshot Método

Definição

Tira um snapshot do estado do log store necessário para fazer uma cópia de segurança.

Sobrecargas

Name Description
CreateLogArchiveSnapshot()

Tira uma imagem do estado do log store para fazer um backup.

CreateLogArchiveSnapshot(SequenceNumber, SequenceNumber)

Tira um instantâneo do estado do log store entre os números de sequência especificados para fazer uma cópia de segurança.

CreateLogArchiveSnapshot()

Tira uma imagem do estado do log store para fazer um 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

Devoluções

Um LogArchiveSnapshot objeto que contém o estado necessário para criar um arquivo.

Exceções

A loja de registos não é arquivável.

O método era chamado depois de a sequência ter sido eliminada.

Ocorre um erro de I/O ao criar o snapshot do arquivo.

Um argumento não é válido.

Foi executada uma operação inválida.

Não há memória suficiente para continuar a execução de um programa.

A sequência de discos está cheia.

O acesso ao armazenamento de registos especificado é negado pelo sistema operativo.

Exemplos

O exemplo seguinte mostra como arquivar a LogStore num 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

Aplica-se a

CreateLogArchiveSnapshot(SequenceNumber, SequenceNumber)

Tira um instantâneo do estado do log store entre os números de sequência especificados para fazer uma cópia de segurança.

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

O número de sequência inicial no intervalo a arquivar.

last
SequenceNumber

O número de sequência final está no intervalo a arquivar.

Devoluções

Um LogArchiveSnapshot objeto que contém o estado necessário para criar um arquivo.

Exceções

first ou last não está entre os números base e último desta sequência.

first é maior que last.

Foi executada uma operação inválida.

Ocorre um erro de I/O ao criar o snapshot do arquivo.

A loja de registos não é arquivável.

O método era chamado depois de a sequência ter sido eliminada.

Não há memória suficiente para continuar a execução de um programa.

A sequência de discos está cheia.

O acesso ao armazenamento de registos especificado é negado pelo sistema operativo.

Observações

O snapshot de arquivo devolvido deste método engloba informação desde o número de sequência base ou o número de sequência de arquivo, o que for inferior, até ao último número de sequência. Não inclui o último número de sequência, o que significa que o arquivo inclui apenas registos até, mas não incluindo o último. Além disso, ao usar este método, o Número de Sequência inicial deve ser igual ao Número de Sequência Base para que o arquivo seja consistente.

Aplica-se a