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 オブジェクト。

例外

ログ ストアはアーカイブできません。

シーケンスが破棄された後、メソッドが呼び出されました。

アーカイブ スナップショットの作成時に I/O エラーが発生します。

引数が無効です。

無効な操作が実行されました。

プログラムの実行を続行するのに十分なメモリがありません。

レコード シーケンスがいっぱいです。

指定されたログ ストアへのアクセスは、オペレーティング システムによって拒否されます。

次の例は、 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 は、このシーケンスの基本シーケンス番号と最後のシーケンス番号の間にありません。

firstlastより大きい。

無効な操作が実行されました。

アーカイブ スナップショットの作成時に I/O エラーが発生します。

ログ ストアはアーカイブできません。

シーケンスが破棄された後、メソッドが呼び出されました。

プログラムの実行を続行するのに十分なメモリがありません。

レコード シーケンスがいっぱいです。

指定されたログ ストアへのアクセスは、オペレーティング システムによって拒否されます。

注釈

このメソッドから返されるアーカイブ スナップショットには、基本シーケンス番号またはアーカイブ シーケンス番号のいずれか小さい方から最後のシーケンス番号までの情報が含まれます。 最後のシーケンス番号には含まれません。つまり、アーカイブには最後までのレコードのみが含まれますが、最後のレコードは含まれません。 さらに、このメソッドを使用する場合、アーカイブの整合性を保つために、start SequenceNumber が BaseSequenceNumber と等しい必要があります。

適用対象