LogStore.CreateLogArchiveSnapshot 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
백업을 만드는 데 필요한 로그 저장소 상태의 스냅샷을 만듭니다.
오버로드
| Name | Description |
|---|---|
| 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 오류가 발생합니다.
인수가 잘못되었습니다.
잘못된 작업이 실행되었습니다.
프로그램 실행을 계속할 메모리가 부족합니다.
레코드 시퀀스가 가득 찼습니다.
지정된 로그 저장소에 대한 액세스는 운영 체제에서 거부됩니다.
예제
다음 예제에서는 XML 문서에 보관 LogStore 하는 방법을 보여줍니다.
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와 같아야 합니다.