Поделиться через


Метод IBackupRestore.OnRestore

Считывает резервной копии содержимого и копирует его к объекту назначения операции восстановления.

Пространство имен:  Microsoft.SharePoint.Administration.Backup
Сборка:  Microsoft.SharePoint (в Microsoft.SharePoint.dll)

Синтаксис

'Декларация
Function OnRestore ( _
    sender As Object, _
    args As SPRestoreInformation _
) As Boolean
'Применение
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
)

Параметры

  • sender
    Тип: System.Object

    Объект, который называется OnRestore.

Возвращаемое значение

Тип: System.Boolean
true в случае успешного выполнения; в противном случае — false.

Замечания

Если класс содержимого можно переносить, код должен проверить, какой метод восстановления используется и вызвать Rename(), если методом является New.

Если класс содержимого не имеет содержимого не из любого IBackupRestore дочерние объекты, которые он может иметь, внедрения следует просто задайте CurrentProgess() по крайней мере 50 процентов и возврата true , как показано в следующем примере. Выполните вызов метода OnRestore все дочерние объекты IBackupRestore .

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

Если класс не имеет содержимого вне дочерних объектов IBackupRestore, которые могут у него быть, реализация должна копировать это содержимое в местоположение восстановления. Возвращается false, если по какой-либо причине восстановление заканчивается с ошибкой.

В следующем примере показана общая структура самостоятельной реализации 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

Если службы Windows или некоторые приложения должен быть остановлена или приостановлена во время восстановления, это можно сделать в начале OnRestore. (Перезапустить службу или приложение в OnPostRestore(Object, SPBackupInformation).) Выполните этот рабочий OnPreRestore(Object, SPBackupInformation) вызван последний метод для каждого компонента, даже в том случае, если он не восстанавливается; OnBackupComplete вызывается только для компонентов, которые будут восстановлены, но, поэтому нет гарантии, службы или приложения остановленной на стадии подготовки бы получить перезапустить.

Метод OnRestore не будет работать, если OnPreRestore возвращает false. Если OnRestore возвращает false, метод OnPostRestore не будут запускаться.

Примеры

Следующий пример показывает реализацию OnRestore , который восстанавливает файлы на сервер переднего плана. FrontEndFilePaths — это закрытое поле. Он содержит коллекцию путей к файлам, которую необходимо восстановить.

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

См. также

Справочные материалы

IBackupRestore интерфейс

Элементы IBackupRestore

Пространство имен Microsoft.SharePoint.Administration.Backup