LogStore.CreateLogArchiveSnapshot Metodo

Definizione

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.

Si applica a