Restaurar um banco de dados do SQL Server até um ponto determinado (modelo de recuperação completa)

Aplica-se a: SQL Server (todas as versões com suporte)

Este tópico descreve como restaurar um banco de dados para um ponto no tempo em SQL Server usando SQL Server Management Studio ou Transact-SQL. Este tópico é relevante apenas para os bancos de dados do SQL Server que usam o modelo de recuperação completa ou bulk-logged.

Importante

No modelo de recuperação bulk-logged, se um backup de log contiver alterações bulk-logged, a recuperação pontual não será possível para um ponto dentro desse backup. O banco de dados deve ser recuperado até o fim do backup do log de transações.

Antes de começar

Recomendações

  • Use STANDBY para localizar um momento determinado desconhecido.

  • Especificar com antecedência o momento determinado em uma sequência de restauração

Segurança

Permissões

Se o banco de dados que está sendo restaurado não existir, o usuário deverá ter permissões CREATE DATABASE para poder executar o comando RESTORE. Se o banco de dados existir, as permissões RESTORE usarão como padrão os membros das funções de servidor fixas sysadmin e dbcreator e o proprietário (dbo) do banco de dados (para a opção FROM DATABASE_SNAPSHOT, o banco de dados sempre existe).

As permissões RESTORE são concedidas a funções nas quais as informações de associação estão sempre disponíveis para o servidor. Como a associação da função de banco de dados fixa pode ser verificada apenas quando o banco de dados está acessível e não danificado, o que nem sempre é o caso quando RESTORE é executado, os membros da função de banco de dados fixa db_owner não têm permissões RESTORE.

Como usar o SQL Server Management Studio.

Para restaurar um banco de dados para um momento determinado

  1. No Pesquisador de Objetos, conecte-se à instância adequada do Mecanismo de Banco de Dados do SQL Servere expanda a árvore de servidores.

  2. Expanda os Bancos de dados. Dependendo do banco de dados, selecione um banco de dados de usuário ou expanda os Bancos de dados do sistemae selecione um banco de dados do sistema.

  3. Clique com o botão direito do mouse no banco de dados, aponte para Tarefas, aponte para Restaurare clique em Banco de Dados.

  4. Na página Geral , use a seção Origem para especificar a origem e o local dos conjuntos de backup a serem restaurados. Selecione uma das seguintes opções:

    • Backup de banco de dados

      Selecione o banco de dados a ser restaurado na lista suspensa. A lista contém apenas os bancos de dados dos quais foi feito um backup de acordo com o histórico de backup do msdb .

    Observação

    Se o backup foi obtido de um servidor diferente, o servidor de destino não terá informações de histórico de backup para o banco de dados especificado. Nesse caso, selecione Dispositivo para especificar manualmente o arquivo ou o dispositivo a ser restaurado.

    • Dispositivo

      Clique no botão Procurar ( ... ) para abrir a caixa de diálogo Selecione dispositivos de backup . Na caixa Tipo de mídia de backup , selecione um dos tipos de dispositivo listados. Para selecionar um ou mais dispositivos da caixa Mídia de backup , clique em Adicionar.

      Após adicionar os dispositivos desejados à caixa de listagem Mídia de backup , clique em OK para voltar à página Geral .

      Na caixa de listagem Fonte: Dispositivo: Banco de Dados, selecione o nome do banco de dados que deve ser restaurado.

      Observação Essa lista estará disponível apenas quando Dispositivo for selecionado. Apenas os bancos de dados que têm backups no dispositivo selecionado estarão disponíveis.

  5. Na seção Destino , a caixa Banco de Dados é preenchida automaticamente com o nome do banco de dados a ser restaurado. Para alterar o nome do banco de dados, digite o novo nome na caixa Banco de Dados .

  6. Clique em Linha do Tempo para acessar a caixa de diálogo Linha do Tempo de Backup .

  7. Na caixa de diálogo Restaurar para , clique em Data e hora específicas.

  8. Use as caixas Data e Hora ou a barra de controle deslizante para especificar uma data específica e hora em que a restauração deve parar. Selecione OK.

    Observação

    Use a caixa Intervalo da Linha do Tempo para alterar a quantidade de tempo exibida na linha do tempo.

  9. Depois que você especificar um momento determinado, o orientador de recuperação de banco de dados garantirá que apenas os backups necessários para restaurar até esse momento determinado sejam selecionados na coluna Restaurar da grade Conjuntos de backup a serem restaurados . Esses backups selecionados compõem o plano de restauração recomendado para a sua restauração pontual. Você deve usar apenas os backups selecionados para sua operação de restauração pontual.

    Para obter informações sobre as colunas nos conjuntos de backup para restaurar a grade, consulte Restaurar Banco de Dados (Página Geral). Para obter informações sobre o Orientador de Recuperação de Banco de Dados, consulte a Visão Geral de Restauração e Recuperação (SQL Server).

  10. Na página Opções , no painel Opções de restauração , você pode selecionar qualquer uma das seguintes opções, de acordo com sua situação:

    • Substituir o banco de dados existente (WITH REPLACE)

    • Preservar as configurações de replicação (WITH KEEP_REPLICATION)

    • Acesso restrito ao banco de dados restaurado (WITH RESTRICTED_USER)

    Para obter mais informações sobre essas opções, consulte Restaurar Banco de Dados (Página Opções).

  11. Selecione uma opção para a caixa Estado de recuperação . Essa caixa determina o estado do banco de dados após a operação de restauração.

    • RESTORE WITH RECOVERY é o comportamento padrão que deixa o banco de dados pronto para uso revertendo as transações não confirmadas. Os logs de transações adicionais não podem ser restaurados. Selecione essa opção se você estiver restaurando todos os backups necessários agora.

    • RESTORE WITH NORECOVERY deixa o banco de dados não operacional e não reverte as transações não confirmadas. Os logs de transações adicionais podem ser restaurados. Só é possível usar o banco de dados depois que ele é recuperado.

    • RESTORE WITH STANDBY deixa o banco de dados no modo somente leitura. Ele desfaz as transações não confirmadas, mas salva as ações de desfazer em um arquivo em espera para que os efeitos da recuperação possam ser revertidos.

    Para obter descrições das opções, consulte Restaurar Banco de Dados (Página Opções).

  12. Fazer backup da parte final do log antes da restauração será selecionada se for necessário para o momento determinado que você selecionou. Você não precisa modificar essa configuração, mas poderá escolher o backup da parte final do log até mesmo se não for necessário.

  13. As operações de restauração poderão falhar se houver conexões ativas com o banco de dados. Marque a opção Fechar conexões existentes para assegurar que todas as conexões ativas entre o Management Studio e o banco de dados sejam fechadas. Essa caixa de seleção define o banco de dados no modo de usuário único antes de executar as operações de restauração e define o banco de dados no modo de vários usuários ao concluir.

  14. Selecione Perguntar antes de restaurar cada backup para que você seja solicitado entre cada operação de restauração. Isso normalmente só é necessário quando o banco de dados é grande e você deseja monitorar o status da operação de restauração.

Usando o Transact-SQL

Antes de começar

Um momento especificado sempre é restaurado a partir de um backup de log. Em cada instrução RESTORE LOG da sequência de restauração, especifique a transação ou o tempo de destino em uma cláusula STOPAT idêntica. Como um pré-requisito para uma restauração pontual, você deve restaurar primeiro um backup de banco de dados completo cujo ponto de extremidade seja anterior ao tempo de recuperação designado. Esse backup de banco de dados completo pode ser anterior ao backup de banco de dados completo mais recente desde que você depois restaure todos os backups de log subsequentes, até o backup de log que contém o tempo determinado.

Para ajudar a identificar qual backup de banco de dados restaurar, uma alternativa é especificar a cláusula WITH STOPAT em uma instrução RESTORE DATABASE para gerar um erro se um backup de dados for muito recente para o tempo designado especificado. O backup de dados completo será sempre restaurado, mesmo que ele contenha o tempo de destino.

Sintaxe Básica do Transact-SQL

RESTAURAR DATABASE_NAME DE LOG DE <backup_device> COM TEMPO DE PARADA=, RECUPERAÇÃO...

O ponto de recuperação é a mais recente confirmação de transação ocorrida até o valor datetime especificado pela hora.

Para restaurar apenas as modificações feitas antes de um momento determinado, especifique WITH STOPAT =hora para cada backup restaurado. Isso garante que você não ultrapassará o tempo de destino.

Para restaurar um banco de dados para um momento determinado

Observação

Para obter um exemplo desse procedimento, veja Exemplo (Transact-SQL), mais adiante nesta seção.

  1. Conecte-se à instância de servidor na qual você deseja restaurar o banco de dados.

  2. Execute a instrução RESTORE DATABASE usando a opção NORECOVERY.

    Observação

    Se uma sequência de restauração parcial excluir qualquer grupo de arquivos FILESTREAM , não haverá suporte para a restauração pontual. Você pode forçar a sequência de restauração a continuar. Contudo, os grupos de arquivos FILESTREAM omitidos de sua instrução RESTORE nunca poderão ser restaurados. Para forçar uma restauração pontual, especifique a opção CONTINUE_AFTER_ERROR juntamente com a opção STOPAT, STOPATMARK ou STOPBEFOREMARK, que você também deve especificar nas instruções RESTORE LOG subsequentes. Se você especificar CONTINUE_AFTER_ERROR, a sequência de restauração parcial terá êxito e o grupo de arquivos FILESTREAM se tornará irrecuperável.

  3. Restaure o último backup diferencial do banco de dados, se houver, sem recuperar o banco de dados (RESTORE DATABASE database_name FROM backup_device WITH NORECOVERY).

  4. Aplique cada backup de log de transações na mesma sequência na qual eles foram criados, especificando o momento em que você pretende parar de restaurar o log (RESTORE DATABASE database_name FROM <backup_device> WITH STOPAT =time, RECOVERY).

    Observação

    As opções RECOVERY e STOPAT. Se o backup de log de transações não contiver o tempo solicitado (por exemplo, se o tempo especificado estiver além do tempo coberto pelo log de transações), um aviso será gerado e o banco de dados permanecerá sem-recuperação.

Exemplo (Transact-SQL)

O exemplo a seguir restaura um banco de dados para seu estado de 12:00 AM em April 15, 2020 e mostra uma operação de restauração que envolve vários backups de log. No dispositivo de backup, AdventureWorksBackups, o backup de banco de dados completo a ser restaurado é o terceiro conjunto de backup no dispositivo (FILE = 3), o primeiro backup de log é o quarto conjunto de backup (FILE = 4), e o segundo backup de log é o quinto conjunto de backup (FILE = 5).

Importante

O banco de dados AdventureWorks2019 usa o modelo de recuperação simples. Para permitir backups de log, antes de fazer um backup de banco de dados completo, o banco de dados foi definido para usar o modelo de recuperação completa, usando ALTER DATABASE AdventureWorks SET RECOVERY FULL.

RESTORE DATABASE AdventureWorks  
   FROM AdventureWorksBackups  
   WITH FILE=3, NORECOVERY;  
  
RESTORE LOG AdventureWorks  
   FROM AdventureWorksBackups  
   WITH FILE=4, NORECOVERY, STOPAT = 'Apr 15, 2020 12:00 AM';  
  
RESTORE LOG AdventureWorks  
   FROM AdventureWorksBackups  
   WITH FILE=5, NORECOVERY, STOPAT = 'Apr 15, 2020 12:00 AM';  
RESTORE DATABASE AdventureWorks WITH RECOVERY;   
GO  
  

Related Tasks

Consulte Também

backupset (Transact-SQL)
RESTORE (Transact-SQL)
RESTORE HEADERONLY (Transact-SQL)