LogStore.CreateLogArchiveSnapshot Метод

Определение

Создает моментальный снимок состояния хранилища журналов, необходимый для создания резервной копии.

Перегрузки

Имя Описание
CreateLogArchiveSnapshot()

Создает моментальный снимок состояния хранилища журналов для создания резервной копии.

CreateLogArchiveSnapshot(SequenceNumber, SequenceNumber)

Создает моментальный снимок состояния хранилища журналов между указанными номерами последовательности для создания резервной копии.

CreateLogArchiveSnapshot()

Создает моментальный снимок состояния хранилища журналов для создания резервной копии.

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

Возвращаемое значение

LogArchiveSnapshot Объект, содержащий состояние, необходимое для создания архива.

Исключения

Хранилище журналов не архивируется.

Метод был вызван после удаления последовательности.

При создании архивного моментального снимка возникает ошибка ввода-вывода.

Недопустимый аргумент.

Выполнена недопустимая операция.

Недостаточно памяти для продолжения выполнения программы.

Последовательность записей заполнена.

Доступ к указанному хранилищу журналов запрещен операционной системой.

Примеры

В следующем примере показано, как архивировать LogStore 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

Применяется к

CreateLogArchiveSnapshot(SequenceNumber, SequenceNumber)

Создает моментальный снимок состояния хранилища журналов между указанными номерами последовательности для создания резервной копии.

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

Параметры

first
SequenceNumber

Начальный номер последовательности в диапазоне для архивирования.

last
SequenceNumber

Конечный номер последовательности в диапазоне для архивирования.

Возвращаемое значение

LogArchiveSnapshot Объект, содержащий состояние, необходимое для создания архива.

Исключения

first или last не находится между базовыми и последними номерами последовательности этой последовательности.

first больше last.

Выполнена недопустимая операция.

При создании архивного моментального снимка возникает ошибка ввода-вывода.

Хранилище журналов не архивируется.

Метод был вызван после удаления последовательности.

Недостаточно памяти для продолжения выполнения программы.

Последовательность записей заполнена.

Доступ к указанному хранилищу журналов запрещен операционной системой.

Комментарии

Моментальный снимок архива, возвращаемый этим методом, включает сведения из базового номера последовательности или архивного номера последовательности, в зависимости от того, что ниже, до последнего номера последовательности. Он не включен для последнего порядкового номера, что означает, что архив включает только записи до последнего. Кроме того, при использовании этого метода начальный параметр SequenceNumber должен иметь значение BaseSequenceNumber, чтобы архив был согласован.

Применяется к