Compartilhar via


Como: de forma programática restaurar conteúdo

Este tópico explica como criar um aplicativo que restaura um de conteúdo Windows SharePoint Services 3.0 wssversion3 componente de um de backup. O tópico pressupõe que você é familiarizado com Visão geral sobre backup e restaurando os dados nos serviços SharePoint Windows e Programação com o modelo de objeto de backup/restauração de serviços SharePoint Windows.

Para restaurar um componente de conteúdo

  1. Adicione uma referência a serviços SharePoint Windows para seu projeto Visual Studio e adicionar using instruções para o Microsoft.SharePoint.Administration e Microsoft.SharePoint.Administration.Backup espaços para nome para você usando codificar arquivo.

  2. Inside the Main method, create a SPRestoreSettings object by using the static GetRestoreSettings method. Para transmitir o parâmetro primeiro o caminho onde o de backup está armazenado. Para transmitir o segundo parâmetro Uma versão seqüência de caracteres de um dos valores de SPRestoreMethodType.

                            SPRestoreSettings settings = SPBackupRestoreSettings.GetRestoreSettings((@"\\Server\WSSBackups", "Overwrite");
    
  3. Solicita o usuário para especificar o de conteúdo componente a ser restaurado e atribuir seu nome para o IndividualItem P:Microsoft.SharePoint.Administration.Backup.SPBackupRestoreSettings.IndividualItem propriedade. Para ver um itemization os nomes dos componentes em seu farm que foram incluídos na última de backup completo e que podem ser os objetos das operações restaurar, você pode ambos executar o comando stsadm -o restore -showtree no linha de comando servidor. Para especificar um de backup completo diferente pacote, use o -backupid backupid. Alternatively, you can visit Operations > Perform a Restore in the Central Administration application. Para especificar todo o farm, use "farm" como o nome. (Setting the property to null also selects the whole farm for backup assuming that you use IndividualItem in all subsequent code to identify by name the component to be restored, as you should. Para obter um exemplo, consulte o uso do FindItems M:Microsoft.SharePoint.Administration.Backup.SPBackupRestoreConsole.FindItems método na etapa 9.)

                            Console.Write("Enter name of component to restore (default is whole farm):");
    settings.IndividualItem = Console.ReadLine();
    
  4. Se você desejar para restaurar de um de backup Other Than o mais recente, identificar o de backup pacote por atribuição seu GUID para o BackupId P:Microsoft.SharePoint.Administration.Backup.SPRestoreSettings.BackupId propriedade. Um registro de cada de backup operação para um determinado de backup localidade é armazenada em spbrtoc.xml na raiz da localidade. Each backup and restore operation is represented in the file by an <SPHistoryObject> element. If the operation is a backup, the <IsBackup> child of the <SPHistoryObject> element is "True". The <SPId> element of the <SPHistoryObject> element contains the GUID of the backup.

    Observação

    Para programaticamente obter a lista de todas as operações de backup e restaurar, use o GetHistory método M:Microsoft.SharePoint.Administration.Backup.SPBackupRestoreConsole.GetHistory.Esse método retorna um objeto SPBackupRestoreHistoryList T:Microsoft.SharePoint.Administration.Backup.SPBackupRestoreHistoryList que contém objetos SPBackupRestoreHistoryObject T:Microsoft.SharePoint.Administration.Backup.SPBackupRestoreHistoryObject.Cada um do último representa uma operação e mantém seu GUID no SelfId P:Microsoft.SharePoint.Administration.Backup.SPBackupRestoreHistoryObject.SelfId propriedade.

                            settings.BackupId = new Guid("GUID");
    
  5. Opcionalmente, defina uma ou ambas as propriedades P:Microsoft.SharePoint.Administration.Backup.SPBackupRestoreSettings.UpdateProgress IsVerbose e UpdateProgress. (Para obter detalhes sobre essas propriedades, consulte os tópicos de referência para eles.)

                            settings.IsVerbose = true;
    settings.UpdateProgress = 10;
    
  6. If necessary, set the FarmAdminLoginName and FarmAdminLoginPassword properties.

                            settings.FarmAdminLoginName = "Bob";
    settings.FarmAdminPassword = "7*j2U";
    
  7. Crie a operação restaurar com o CreateBackupRestore método M:Microsoft.SharePoint.Administration.Backup.SPBackupRestoreConsole.CreateBackupRestore. (Um objeto histórico para a operação também é criado).

                            Guid restore = SPBackupRestoreConsole.CreateBackupRestore(settings);
    
  8. Se seu interface do usuário tiver usuários tipo um nome componente instead of escolher um de uma lista, você deve certificar-se de que o nome inserido corresponde exatamente um componente. Adicione a seguinte linha ao seu método principal.

                            SPBackupRestoreObject node = EnsureUniqueValidComponentName(settings, ref restore);
    
  9. Adicione o seguinte implementação de seu EnsureUniqueValidComponentName método. Use o método FindItems M:Microsoft.SharePoint.Administration.Backup.SPBackupRestoreConsole.FindItems para recuperar uma coleção de de conteúdo objetos cujos nomes corresponder ao nome digitado pelo usuário. Se não houver nenhuma correspondência, prompt o usuário para tentar novamente. Se houver mais de uma, prompt o usuário ser mais específico. Se o componente nome que o usuário digitado é válido e get não ambígua, uma referência para o objeto SPBackupRestoreObject T:Microsoft.SharePoint.Administration.Backup.SPBackupRestoreObject que representa o componente que o usuário quer para restaurar.

                            private static SPBackupRestoreObject EnsureUniqueValidComponentName(SPBackupRestoreSettings settings, ref Guid operationGUID)
    {
        SPBackupRestoreObjectCollection list = SPBackupRestoreConsole.FindItems(operationGUID, settings.IndividualItem);
        SPBackupRestoreObject component = null;
    
        if (list.Count <= 0)
        {
            Console.WriteLine("There is no component with that name. Run again with a new name.");
            Console.WriteLine("Press Enter to continue.");
            Console.ReadLine();
        }
        else if (list.Count > 1)  // The component name specified is ambiguous. Prompt user to be more specific.
        {
            Console.WriteLine("More than one component matches the name you entered.");
            Console.WriteLine("Run again with one of the following:");
            for (int i = 0; i < list.Count; i++)
            {
                Console.WriteLine("\t{0}", list[i].ToString());
            }
            Console.WriteLine("Press Enter to continue.");
            Console.ReadLine();
        }
        else
        {
            component = list[0];
        }
    
        return component;
    
    }
    
  10. No método principal, crie uma estrutura condicional que irá executar somente se o seu EnsureUniqueValidComponentName método retornou um válido nó.

                            if (node != null)
    {
        // TODO: Set the restore operation as the active operation
        // and run it.
    }
    
  11. Substituir a linha "tarefa" na etapa anterior com a seguinte codificar. Isso define a operação seja o ativo operação com o método SetActive M:Microsoft.SharePoint.Administration.Backup.SPBackupRestoreConsole.SetActive e testes para verificar que ele bem-sucedido. Se ele falhar, o qual ele irá se outra operação de backup ou restaurar já em andamento, está relatório de erro para o interface do usuário do seu aplicativo.

                            if (SPBackupRestoreConsole.SetActive(restore) == true)
    {
        // TODO: Run the operation. See next step.
    }
    else
    {
        // Report through your UI that another backup
        // or restore operation is underway. 
        Console.WriteLine("Another backup or restore operation is already underway. Try again when it ends.");
    }
    
  12. In the code branch that runs if the SetActive call succeeds, run the operation with the Run method. Teste se a operação tiver êxito. Se ele falhar, relatório falha mensagem da operação para o interface do usuário. O seguinte codificar substitui a linha "tarefa" a etapa anterior.

                            if (SPBackupRestoreConsole.Run(restore, node) == false)
    {
        // Report "error" through your UI.
        String error = SPBackupRestoreConsole.Get(restore).FailureMessage;
        Console.WriteLine(error);
    }
    
  13. Limpe a restaurar com o Remove método M:Microsoft.SharePoint.Administration.Backup.SPBackupRestoreConsole.Remove. Adicione o seguinte codificar imediatamente antes de chave de fechamento é inserido na etapa 10.

                            // Clean up the operation.
    SPBackupRestoreConsole.Remove(restore);
    
    Console.WriteLine("Restore attempt complete. Press Enter to continue.");
    Console.ReadLine();
    

Exemplo

O seguinte mostra codificar como programa uma restauração de um de conteúdo componente. Substitua o caminho do seu de backup o espaço reservado \\Server\WSSBackups localidade. Localizar automaticamente será o tempo de execução o de backup mais recente em que localidade.

                    using System;
using Microsoft.SharePoint.Administration;
using Microsoft.SharePoint.Administration.Backup;

namespace MyCompany.SharePoint.Administration.Backup
{
    class Restore
    {
        static void Main(string[] args)
        {
            // Create the restore settings.
            SPRestoreSettings settings = SPBackupRestoreSettings.GetRestoreSettings(@"\\Server\WSSBackups", "Overwrite");

            // Identify the content component to restore.
            Console.Write("Enter name of component to restore (default is whole farm):");
            settings.IndividualItem = Console.ReadLine();
            
            // Set optional operation parameters.
            settings.IsVerbose = true;
            settings.UpdateProgress = 10;
            
            // Create the restore operation and return its ID.
            Guid restore = SPBackupRestoreConsole.CreateBackupRestore(settings);

            SPBackupRestoreObject node = EnsureUniqueValidComponentName(settings, ref restore);

            if (node != null)
            {
                // Set the restore as the active job and run it.
                if (SPBackupRestoreConsole.SetActive(restore) == true)
                {
                    if (SPBackupRestoreConsole.Run(restore, node) == false)
                    {
                        // Report "error" through your UI.
                        String error = SPBackupRestoreConsole.Get(restore).FailureMessage;
                        Console.WriteLine(error);
                    }
                }
                else
                {
                    // Report through your UI that another backup
                    // or restore operation is underway. 
                    Console.WriteLine("Another backup or restore operation is already underway. Try again when it ends.");
                }

                // Clean up the operation.
                SPBackupRestoreConsole.Remove(restore);

                Console.WriteLine("Restore attempt complete. Press Enter to continue.");
                Console.ReadLine();
            }
        }// end Main

        private static SPBackupRestoreObject EnsureUniqueValidComponentName(SPBackupRestoreSettings settings, ref Guid operationGUID)
        {
            SPBackupRestoreObjectCollection list = SPBackupRestoreConsole.FindItems(operationGUID, settings.IndividualItem);
            SPBackupRestoreObject component = null;

            if (list.Count <= 0)
            {
                Console.WriteLine("There is no component with that name. Run again with a new name.");
                Console.WriteLine("Press Enter to continue.");
                Console.ReadLine();
            }
            else if (list.Count > 1)  // The component name specified is ambiguous. Prompt user to be more specific.
            {
                Console.WriteLine("More than one component matches the name you entered.");
                Console.WriteLine("Run again with one of the following:");
                for (int i = 0; i < list.Count; i++)
                {
                    Console.WriteLine("\t{0}", list[i].ToString());
                }
                Console.WriteLine("Press Enter to continue.");
                Console.ReadLine();
            }
            else
            {
                component = list[0];
            }

            return component;

        }// end EnsureUniqueValidComponentName

    }// end Restore class
}// end namespace

Consulte também

Tarefas

Como: de forma programática fazer backup de conteúdo
Como: de forma programática fazer backup e restauração de uma coleção de site único
Como a: criar uma classe de conteúdo que pode ser feita e restaurada
Como a: estender o utilitário STSADM

Referência

Microsoft.SharePoint.Administration.Backup
Backup
Restore

Conceitos

Programação com o modelo de objeto de backup/restauração de serviços SharePoint Windows

Outros recursos

M:Microsoft.SharePoint.Administration.SPSiteCollection.Backup(System.String,System.String,System.Boolean)