Language

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

first が lastより大きい。

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

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

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

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

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

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

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

注釈

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

適用対象