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