LogStore.CreateLogArchiveSnapshot Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Prend un instantané de l’état du magasin de journaux nécessaire pour effectuer une sauvegarde.
Surcharges
| Nom | Description |
|---|---|
| CreateLogArchiveSnapshot() |
Prend un instantané de l’état du magasin de journaux pour effectuer une sauvegarde. |
| CreateLogArchiveSnapshot(SequenceNumber, SequenceNumber) |
Prend un instantané de l’état du magasin de journaux entre les numéros de séquence spécifiés pour effectuer une sauvegarde. |
CreateLogArchiveSnapshot()
Prend un instantané de l’état du magasin de journaux pour effectuer une sauvegarde.
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
Retours
Objet LogArchiveSnapshot qui contient l’état nécessaire pour créer une archive.
Exceptions
Le magasin de journaux n’est pas archivable.
La méthode a été appelée après la suppression de la séquence.
Une erreur d’E/S se produit lors de la création de l’instantané d’archivage.
Un argument n’est pas valide.
Une opération non valide a été exécutée.
Il n’y a pas assez de mémoire pour poursuivre l’exécution d’un programme.
La séquence d’enregistrements est pleine.
L’accès au magasin de journaux spécifié est refusé par le système d’exploitation.
Exemples
L’exemple suivant montre comment archiver un LogStore document 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
S’applique à
CreateLogArchiveSnapshot(SequenceNumber, SequenceNumber)
Prend un instantané de l’état du magasin de journaux entre les numéros de séquence spécifiés pour effectuer une sauvegarde.
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
Paramètres
- first
- SequenceNumber
Numéro de séquence de départ de la plage à archiver.
- last
- SequenceNumber
Numéro de séquence de fin dans la plage à archiver.
Retours
Objet LogArchiveSnapshot qui contient l’état nécessaire pour créer une archive.
Exceptions
first ou last n’est pas compris entre les nombres de base et de dernière séquence de cette séquence.
first est supérieur à last.
Une opération non valide a été exécutée.
Une erreur d’E/S se produit lors de la création de l’instantané d’archivage.
Le magasin de journaux n’est pas archivable.
La méthode a été appelée après la suppression de la séquence.
Il n’y a pas assez de mémoire pour poursuivre l’exécution d’un programme.
La séquence d’enregistrements est pleine.
L’accès au magasin de journaux spécifié est refusé par le système d’exploitation.
Remarques
L’instantané d’archivage retourné par cette méthode englobe les informations du numéro de séquence de base ou du numéro de séquence d’archivage, selon la valeur inférieure, au dernier numéro de séquence. Il n’est pas inclusif pour le dernier numéro de séquence, ce qui signifie que l’archive inclut uniquement les enregistrements jusqu’à la dernière, mais pas la dernière. En outre, lors de l’utilisation de cette méthode, le numéro de séquence de début doit être égal à BaseSequenceNumber pour que l’archive soit cohérente.