LogStore.CreateLogArchiveSnapshot Metodo

Definizione

Crea uno snapshot dello stato dell'archivio dei log necessario per eseguire un backup.Takes a snapshot of the log store state necessary to make a backup.

Overload

CreateLogArchiveSnapshot()

Crea uno snapshot dello stato dell'archivio dei log per eseguire un backup.Takes a snapshot of the log store state for making a backup.

CreateLogArchiveSnapshot(SequenceNumber, SequenceNumber)

Crea uno snapshot dello stato dell'archivio dei log tra i numeri di sequenza specificati per l'esecuzione di un backup.Takes a snapshot of the log store state between the specified sequence numbers for making a backup.

CreateLogArchiveSnapshot()

Crea uno snapshot dello stato dell'archivio dei log per eseguire un backup.Takes a snapshot of the log store state for making a 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

Restituisce

Oggetto LogArchiveSnapshot che contiene lo stato necessario per creare un archivio.A LogArchiveSnapshot object that contains the state necessary to make an archive.

Eccezioni

L'archivio dei registri non è archivable.The log store is not archivable.

Il metodo è stato chiamato dopo l'eliminazione sequenza.The method was called after the sequence has been disposed of.

Si verifica un errore di I/O durante la creazione dell’istantanea dell'archivio.An I/O error occurs when creating the archive snapshot.

Un argomento non è valido.An argument is not valid.

È stata eseguita un’operazione non valida.An invalid operation has been executed.

Memoria insufficiente per continuare l'esecuzione di un programma.There is not enough memory to continue the execution of a program.

Sequenza di record piena.The record sequence is full.

L'accesso per l'archivio dei registri specificato viene negato dal sistema operativo.Access for the specified log store is denied by the operating system.

Esempi

Nell'esempio seguente viene illustrato come memorizzare un LogStore in un documento XML.The following example shows how to archive a LogStore to an XML document.

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

CreateLogArchiveSnapshot(SequenceNumber, SequenceNumber)

Crea uno snapshot dello stato dell'archivio dei log tra i numeri di sequenza specificati per l'esecuzione di un backup.Takes a snapshot of the log store state between the specified sequence numbers for making a 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.The starting sequence number in the range to archive.

last
SequenceNumber

Numero di sequenza finale nell'intervallo da archiviare.The ending sequence number in the range to archive.

Restituisce

Oggetto LogArchiveSnapshot che contiene lo stato necessario per creare un archivio.A LogArchiveSnapshot object that contains the state necessary to make an archive.

Eccezioni

first o last non è compreso tra i numeri di sequenza di base e finale di questa sequenza.first or last is not between the base and last sequence numbers of this sequence.

first è maggiore di last.first is larger than last.

È stata eseguita un’operazione non valida.An invalid operation has been executed.

Si verifica un errore di I/O durante la creazione dell’istantanea dell'archivio.An I/O error occurs when creating the archive snapshot.

L'archivio dei registri non è archivable.The log store is not archivable.

Il metodo è stato chiamato dopo l'eliminazione sequenza.The method was called after the sequence has been disposed of.

Memoria insufficiente per continuare l'esecuzione di un programma.There is not enough memory to continue the execution of a program.

Sequenza di record piena.The record sequence is full.

L'accesso per l'archivio dei registri specificato viene negato dal sistema operativo.Access for the specified log store is denied by the operating system.

Commenti

Lo snapshot dell'archivio restituito da questo metodo include informazioni dal numero di sequenza di base o dal numero di sequenza dell'archivio, in base a quale dei due valori risulta inferiore, all'ultimo numero di sequenza.The archive snapshot returned from this method encompasses information from either the base sequence number or the archive sequence number, whichever is lower, to the last sequence number. Non include l'ultimo numero di sequenza, che significa che l'archivio include soltanto i record fino all'ultimo escluso.It is not inclusive for the last sequence number, which means that the archive only includes records up to but not including last. Inoltre, quando si utilizza questo metodo, perché l'archivio sia coerente è necessario che il valore SequenceNumber iniziale sia uguale al valore BaseSequenceNumber.In addition, when using this method, the start SequenceNumber must be equal to the BaseSequenceNumber in order for the archive to be consistent.

Si applica a