Compartir a través de


del método IBackupRestore.OnRestore

Lee la copia el contenido y los copia en el destino de la operación de restauración.

Espacio de nombres:  Microsoft.SharePoint.Administration.Backup
Ensamblado:  Microsoft.SharePoint (en Microsoft.SharePoint.dll)

Sintaxis

'Declaración
Function OnRestore ( _
    sender As Object, _
    args As SPRestoreInformation _
) As Boolean
'Uso
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
)

Parámetros

Valor devuelto

Tipo: System.Boolean
true si es correcto; en caso contrario, false.

Comentarios

Si se puede migrar la clase de contenido, el código debe comprobar cuál es el método de restauración y llamar a Rename() si el método es New.

Si la clase de contenido no tiene contenido fuera de los objetos secundarios de IBackupRestore puede tener, su implementación simplemente debe establecer el CurrentProgess() en al menos un 50 por ciento y devolver true tal como se muestra en el ejemplo siguiente. Hacer no la llamada al método OnRestore de cualquier objeto secundario de 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

Si la clase tiene contenido aparte de los objetos secundarios IBackupRestore que pueda tener, la implementación debe copiar dicho contenido en el destino de la restauración. Devuelva false, si por cualquier motivo se produce un error en la copia del contenido.

En el ejemplo siguiente se muestra la estructura general de una implementación sustancial de 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

Si un servicio de Windows, o alguna aplicación, necesita ser o detenido durante la restauración, puede hacerlo al principio de OnRestore. (Reiniciar el servicio o aplicación en OnPostRestore(Object, SPBackupInformation)). No haga este trabajo en OnPreRestore(Object, SPBackupInformation) que el último método se llama para cada componente, incluso si no se va a restaurar; pero se llama a OnBackupComplete sólo para los componentes que se restauran, por lo que no hay ninguna garantía de que un servicio o aplicación detenido en ¿obtener reiniciar la fase de preparación.

El método OnRestore no se ejecutará si OnPreRestore devuelve false. Si OnRestore devuelve false, no se ejecutará el método OnPostRestore .

Ejemplos

El ejemplo siguiente muestra una implementación de OnRestore que restaura archivos a un servidor front-end. FrontEndFilePaths es un campo privado. Contiene una colección de rutas de acceso de los archivos que se pueden restaurar.

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

Vea también

Referencia

interfaz IBackupRestore

Miembros IBackupRestore

Espacio de nombres Microsoft.SharePoint.Administration.Backup