IBackupRestore.OnRestore-Methode
Liest die gesicherte Inhalt und kopiert sie in das Ziel des Wiederherstellungsvorgangs.
Namespace: Microsoft.SharePoint.Administration.Backup
Assembly: Microsoft.SharePoint (in Microsoft.SharePoint.dll)
Syntax
'Declaration
Function OnRestore ( _
sender As Object, _
args As SPRestoreInformation _
) As Boolean
'Usage
Dim instance As IBackupRestore
Dim sender As Object
Dim args As SPRestoreInformation
Dim returnValue As Boolean
returnValue = instance.OnRestore(sender, _
args)
bool OnRestore(
Object sender,
SPRestoreInformation args
)
Parameter
sender
Typ: System.ObjectDas Objekt, OnRestoreaufgerufen.
args
Typ: Microsoft.SharePoint.Administration.Backup.SPRestoreInformationEin SPRestoreInformation -Objekt, das Daten über den Vorgang enthält.
Rückgabewert
Typ: System.Boolean
true bei erfolgreicher; andernfalls false.
Hinweise
Wenn Ihre Inhaltsklasse migriert werden kann, sollten Code überprüfen, um herauszufinden, was die Restore-Methode ist, und rufen Rename() , wenn die Methode Newist.
Wenn Ihre Inhaltsklasse keinen Inhalt außerhalb IBackupRestore untergeordnete Objekte, die sie möglicherweise enthält, sollte einfach die Implementierung der CurrentProgess() auf mindestens 50 Prozent festgelegt und true zurück, wie im folgenden Beispiel gezeigt. Führen Sie nicht Aufruf der OnRestore -Methode alle IBackupRestore untergeordneten Objekte.
public Boolean OnRestore(Object sender, SPRestoreInformation args)
{
if (args == null)
{
throw new ArgumentNullException("args");
}
if (args.RestoreMethod == SPRestoreMethodType.New)
{
args.Rename();
}
args.CurrentProgress = 50;
return true;
}
Public Function OnRestore(ByVal sender As Object, ByVal args As SPRestoreInformation) As Boolean
If args Is Nothing Then
Throw New ArgumentNullException("args")
End If
If args.RestoreMethod = SPRestoreMethodType.New Then
args.Rename()
End If
args.CurrentProgress = 50
Return True
End Function
Wenn die Klasse Inhalte außerhalb möglicherweise vorhandener untergeordneter IBackupRestore-Objekte enthält, müssen diese Inhalte durch die Implementierung in das Wiederherstellungsziel kopiert werden. Geben Sie false zurück, wenn beim Kopieren der Inhalte Fehler auftreten.
Das folgende Beispiel zeigt die allgemeine Struktur einer eigenständigen Implementierung von OnRestore():
public Boolean OnRestore(Object sender, SPRestoreInformation args)
{
if (args == null)
{
throw new ArgumentNullException("args");
}
if (args.RestoreMethod == SPRestoreMethodType.New)
{
args.Rename();
}
args.CurrentProgress = 50;
Boolean successSignal = true;
// TODO: Implement copying your content to the destination.
// If the copy fails, set successSignal to false.
return successSignal;
}
Public Function OnRestore(ByVal sender As Object, ByVal args As SPRestoreInformation) As Boolean
If args Is Nothing Then
Throw New ArgumentNullException("args")
End If
If args.RestoreMethod = SPRestoreMethodType.New Then
args.Rename()
End If
args.CurrentProgress = 50
Dim successSignal As Boolean = True
' TODO: Implement copying your content to the destination.
' If the copy fails, set successSignal to false.
Return successSignal
End Function
Wenn ein Windows-Dienst oder einer Anwendung beendet oder angehalten werden, während der Wiederherstellung werden muss, können Sie dies am Anfang des OnRestoretun. (Der Dienst oder die Anwendung starten im neu OnPostRestore(Object, SPBackupInformation).) Führen Sie diese Aufgabe in OnPreRestore(Object, SPBackupInformation) , die für jede Komponente, die zweite Methode aufgerufen wird, auch wenn es nicht wiederhergestellt wird; aber nur für Komponenten, die wiederhergestellt werden OnBackupComplete aufgerufen wird, damit nicht garantiert werden, die in einem Dienst oder einer Anwendung beendet die Phase Prepare würde abrufen neu gestartet.
Die OnRestore -Methode wird nicht ausgeführt, wenn OnPreRestorefalsezurückgibt. Wenn OnRestorefalsezurückgibt, wird die OnPostRestore -Methode nicht ausgeführt.
Beispiele
Das folgende Beispiel zeigt eine Implementierung von OnRestore , die Dateien auf einem Front-End-Server wiederhergestellt. FrontEndFilePaths ist ein privates Feld. Sie enthält eine Auflistung von Pfaden der Dateien, die wiederhergestellt werden.
public Boolean OnRestore(Object sender, SPRestoreInformation args)
{
if (args == null)
{
throw new ArgumentNullException("args");
}
// If the CriticalFiles object was deleted from the farm after it was
// backed up, restore it to the configuration database.
CriticalFiles cf = SPFarm.Local.GetChild<CriticalFiles>(this.Name);
if (cf == null)
{
this.Update();
args.Log(SPBackupRestoreLogSeverity.Verbose, this.Name + " added back to configuration database.");
}
Boolean successSignal = true;
// TODO: The following loop restores files to the local server. If there are
// multiple front end servers, your code must iterate through all of
// SPFarm.Local.Servers and restore the same files to every server whose
// Role property is SPServerRole.WebFrontEnd
foreach (String path in FrontEndFilePaths)
{
FileInfo backupCopy = new FileInfo(path);
FileInfo file = new FileInfo(args.Location + @"\" + backupCopy.Name);
try
{
file.CopyTo(path, true);
args.Log(SPBackupRestoreLogSeverity.Verbose, "Restored " + file.Name);
}
catch (Exception e)
{
args.Log(SPBackupRestoreLogSeverity.Verbose, file.Name + " not restored: " + e.Message);
successSignal = false;
}
}
args.CurrentProgress = 50;
return successSignal;
}
Public Function OnRestore(ByVal sender As Object, ByVal args As SPRestoreInformation) As Boolean
If args Is Nothing Then
Throw New ArgumentNullException("args")
End If
' If the CriticalFiles object was deleted from the farm after it was
' backed up, restore it to the configuration database.
Dim cf As CriticalFiles = SPFarm.Local.GetChild(Of CriticalFiles)(Me.Name)
If cf Is Nothing Then
Me.Update()
args.Log(SPBackupRestoreLogSeverity.Verbose, Me.Name & " added back to configuration database.")
End If
Dim successSignal As Boolean = True
' TODO: The following loop restores files to the local server. If there are
' multiple front end servers, your code must iterate through all of
' SPFarm.Local.Servers and restore the same files to every server whose
' Role property is SPServerRole.WebFrontEnd
For Each path As String In FrontEndFilePaths
Dim backupCopy As New FileInfo(path)
Dim file As New FileInfo(args.Location & "\" & backupCopy.Name)
Try
file.CopyTo(path, True)
args.Log(SPBackupRestoreLogSeverity.Verbose, "Restored " & file.Name)
Catch e As Exception
args.Log(SPBackupRestoreLogSeverity.Verbose, file.Name & " not restored: " & e.Message)
successSignal = False
End Try
Next path
args.CurrentProgress = 50
Return successSignal
End Function