Freigeben über


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

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

Siehe auch

Referenz

IBackupRestore Schnittstelle

IBackupRestore-Member

Microsoft.SharePoint.Administration.Backup-Namespace