LogStore.CreateLogArchiveSnapshot メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
バックアップの作成に必要なログ ストア状態のスナップショットを取得します。
オーバーロード
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 エラーが発生しました。
ログ ストアはアーカイブできません。
シーケンスが破棄された後にメソッドが呼び出されました。
プログラムの実行を継続する十分なメモリがありません。
レコード シーケンスがいっぱいです。
指定のログ ストアへのアクセスは、オペレーティング システムにより拒否されました。
注釈
このメソッドから返されるアーカイブ スナップショットには、基本シーケンス番号またはアーカイブ シーケンス番号のどちらか小さい方から最後のシーケンス番号までの情報が含まれます。 ただし、アーカイブのレコードには、最後のシーケンス番号は含まれません。 また、このメソッドを使用する場合、アーカイブの一貫性を保つには、開始 SequenceNumber を BaseSequenceNumber と同じ値にする必要があります。
適用対象
.NET