Restaurar um banco de dados do SQL Server até um ponto determinado (modelo de recuperação completa)Restore a SQL Server Database to a Point in Time (Full Recovery Model)

APLICA-SE A: simSQL Server nãoBanco de Dados SQL do Azure nãoAzure Synapse Analytics (SQL DW) nãoParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Este tópico descreve como restaurar um banco de dados em um determinado ponto no SQL Server 2019 (15.x)SQL Server 2019 (15.x) usando o SQL Server Management StudioSQL Server Management Studio ou o Transact-SQLTransact-SQL.This topic describes how to restore a database to a point in time in SQL Server 2019 (15.x)SQL Server 2019 (15.x) by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL. Este tópico é relevante apenas para os bancos de dados do SQL ServerSQL Server que usam o modelo de recuperação completa ou bulk-logged.This topic is relevant only for SQL ServerSQL Server databases that use the full or bulk-logged recovery models.

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.Under the bulk-logged recovery model, if a log backup contains bulk-logged changes, point-in-time recovery is not possible to a point within that backup. O banco de dados deve ser recuperado até o fim do backup do log de transações.The database must be recovered to the end of the transaction log backup.

Antes de começarBefore You Begin

RecomendaçõesRecommendations

  • Use STANDBY para localizar um momento determinado desconhecido.Use STANDBY to find unknown point in time.

  • Especificar com antecedência o momento determinado em uma sequência de restauraçãoSpecify the point in time early in a restore sequence

SegurançaSecurity

PermissõesPermissions

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.If the database being restored does not exist, the user must have CREATE DATABASE permissions to be able to execute 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).If the database exists, RESTORE permissions default to members of the sysadmin and dbcreator fixed server roles and the owner (dbo) of the database (for the FROM DATABASE_SNAPSHOT option, the database always exists).

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.RESTORE permissions are given to roles in which membership information is always readily available to the server. 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.Because fixed database role membership can be checked only when the database is accessible and undamaged, which is not always the case when RESTORE is executed, members of the db_owner fixed database role do not have RESTORE permissions.

Usando o SQL Server Management StudioUsing SQL Server Management Studio

Para restaurar um banco de dados para um momento determinadoTo restore a database to a point in time

  1. No Pesquisador de Objetos, conecte-se à instância adequada do Mecanismo de Banco de Dados do SQL ServerSQL Server Database Enginee expanda a árvore de servidores.In Object Explorer, connect to the appropriate instance of the Mecanismo de Banco de Dados do SQL ServerSQL Server Database Engine, and expand the server tree.

  2. Expanda os Bancos de dados.Expand Databases. 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.Depending on the database, either select a user database or expand System Databases, and then select a system database.

  3. Clique com o botão direito do mouse no banco de dados, aponte para Tarefas, aponte para Restaurare clique em Banco de Dados.Right-click the database, point to Tasks, point to Restore, and then click Database.

  4. Na página Geral , use a seção Origem para especificar a origem e o local dos conjuntos de backup a serem restaurados.On the General page, use the Source section to specify the source and location of the backup sets to restore. Selecione uma das seguintes opções:Select one of the following options:

    • Backup de banco de dadosDatabase

      Selecione o banco de dados a ser restaurado na lista suspensa.Select the database to restore from the drop-down list. 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 .The list contains only databases that have been backed up according to the msdb backup history.

    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.If the backup is taken from a different server, the destination server will not have the backup history information for the specified database. Nesse caso, selecione Dispositivo para especificar manualmente o arquivo ou o dispositivo a ser restaurado.In this case, select Device to manually specify the file or device to restore.

    • DispositivoDevice

      Clique no botão Procurar ( ... ) para abrir a caixa de diálogo Selecione dispositivos de backup .Click the browse (...) button to open the Select backup devices dialog box. Na caixa Tipo de mídia de backup , selecione um dos tipos de dispositivo listados.In the Backup media type box, select one of the listed device types. Para selecionar um ou mais dispositivos da caixa Mídia de backup , clique em Adicionar.To select one or more devices for the Backup media box, click Add.

      Após adicionar os dispositivos desejados à caixa de listagem Mídia de backup , clique em OK para voltar à página Geral .After you add the devices you want to the Backup media list box, click OK to return to the General page.

      Na caixa de listagem Fonte: Dispositivo: Banco de Dados, selecione o nome do banco de dados que deve ser restaurado.In the Source: Device: Database list box, select the name of the database which should be restored.

      Observação Essa lista estará disponível apenas quando Dispositivo for selecionado.Note This list is only available when Device is selected. Apenas os bancos de dados que têm backups no dispositivo selecionado estarão disponíveis.Only databases that have backups on the selected device will be available.

  5. Na seção Destino , a caixa Banco de Dados é preenchida automaticamente com o nome do banco de dados a ser restaurado.In the Destination section, the Database box is automatically populated with the name of the database to be restored. Para alterar o nome do banco de dados, digite o novo nome na caixa Banco de Dados .To change the name of the database, enter the new name in the Database box.

  6. Clique em Linha do Tempo para acessar a caixa de diálogo Linha do Tempo de Backup .Click Timeline to access the Backup Timeline dialog box.

  7. Na caixa de diálogo Restaurar para , clique em Data e hora específicas.In the Restore to section, click Specific date and time.

  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.Use either the Date and Time boxes or the slider bar to specify a specific date and time to where the restore should stop. Clique em OK.Click OK.

    Observação

    Use a caixa Intervalo da Linha do Tempo para alterar a quantidade de tempo exibida na linha do tempo.Use the Timeline Interval box to change the amount of time displayed on the timeline.

  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 .After you have specified a specific point in time, the Database Recovery Advisor ensures that only backups that are required for restoring to that point in time are selected in the Restore column of the Backup sets to restore grid. Esses backups selecionados compõem o plano de restauração recomendado para a sua restauração pontual.These selected backups make up the recommended restore plan for your point-in-time restore. Você deve usar apenas os backups selecionados para sua operação de restauração pontual.You should use only the selected backups for your point-in-time restore operation.

    Para obter informações sobre as colunas da grade Conjuntos de backup a serem restaurados , veja Restaurar banco de dados (página Geral)).For information about the columns in the Backup sets to restore grid, see Restore Database (General Page). Para obter informações sobre o Orientador de Recuperação de Banco de Dados, confira Visão geral da restauração e recuperação (SQL Server).For information about the Database Recovery Advisor, see Restore and Recovery Overview (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:On the Options page, in the Restore options panel, you can select any of the following options, if appropriate for your situation:

    • Substituir o banco de dados existente (WITH REPLACE)Overwrite the existing database (WITH REPLACE)

    • Preservar as configurações de replicação (WITH KEEP_REPLICATION)Preserve the replication settings (WITH KEEP_REPLICATION)

    • Acesso restrito ao banco de dados restaurado (WITH RESTRICTED_USER)Restrict access to the restored database (WITH RESTRICTED_USER)

    Para obter mais informações sobre essas opções, veja Restaurar banco de dados (Página Opções).For more information about these options, see Restore Database (Options Page).

  11. Selecione uma opção para a caixa Estado de recuperação .Select an option for the Recovery state box. Essa caixa determina o estado do banco de dados após a operação de restauração.This box determines the state of the database after the restore operation.

    • RESTORE WITH RECOVERY é o comportamento padrão que deixa o banco de dados pronto para uso revertendo as transações não confirmadas.RESTORE WITH RECOVERY is the default behavior which leaves the database ready for use by rolling back the uncommitted transactions. Os logs de transações adicionais não podem ser restaurados.Additional transaction logs cannot be restored. Selecione essa opção se você estiver restaurando todos os backups necessários agora.Select this option if you are restoring all of the necessary backups now.

    • RESTORE WITH NORECOVERY deixa o banco de dados não operacional e não reverte as transações não confirmadas.RESTORE WITH NORECOVERY which leaves the database non-operational, and does not roll back the uncommitted transactions. Os logs de transações adicionais podem ser restaurados.Additional transaction logs can be restored. Só é possível usar o banco de dados depois que ele é recuperado.The database cannot be used until it is recovered.

    • RESTORE WITH STANDBY deixa o banco de dados no modo somente leitura.RESTORE WITH STANDBY which leaves the database in read-only mode. 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.It undoes uncommitted transactions, but saves the undo actions in a standby file so that recovery effects can be reverted.

    Para ver as descrições das opções, consulte Restaurar banco de dados (Página Opções).For descriptions of the options, see Restore Database (Options Page).

  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.Take tail-log backup before restore will be selected if it is necessary for the point in time that you have selected. 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.You do not need to modify this setting, but you can choose to backup the tail of the log even if it is not required.

  13. As operações de restauração poderão falhar se houver conexões ativas com o banco de dados.Restore operations may fail if there are active connections to the database. Marque a opção Fechar conexões existentes para assegurar que todas as conexões ativas entre o Management StudioManagement Studio e o banco de dados sejam fechadas.Check the Close existing connections option to ensure that all active connections between Management StudioManagement Studio and the database are closed. 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.This check box sets the database to single user mode before performing the restore operations, and sets the database to multi-user mode when complete.

  14. Selecione Perguntar antes de restaurar cada backup para que você seja solicitado entre cada operação de restauração.Select Prompt before restoring each backup if you wish to be prompted between each restore operation. Isso normalmente só é necessário quando o banco de dados é grande e você deseja monitorar o status da operação de restauração.This is not usually necessary unless the database is large and you wish to monitor the status of the restore operation.

Usando o Transact-SQLUsing Transact-SQL

Antes de começarBefore you begin

Um momento especificado sempre é restaurado a partir de um backup de log.A specified time is always restored from a log backup. 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.In every RESTORE LOG statement of the restore sequence, you must specify your target time or transaction in an identical STOPAT clause. 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.As a prerequisite to a point-in-time restore, you must first restore a full database backup whose end point is earlier than your target restore time. 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.That full database backup can be older than the most recent full database backup as long as you then restore every subsequent log backup, up to and including the log backup that contains your target point in time.

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.To help you identify which database backup to restore, you can optionally specify your WITH STOPAT clause in your RESTORE DATABASE statement to raise an error if a data backup is too recent for the specified target time. O backup de dados completo será sempre restaurado, mesmo que ele contenha o tempo de destino.The complete data backup is always restored, even if it contains the target time.

Sintaxe Transact-SQLTransact-SQL básicaBasic Transact-SQLTransact-SQL syntax

RESTORE LOG database_name FROM <backup_device> WITH STOPAT = time , RECOVERY...RESTORE LOG database_name FROM <backup_device> WITH STOPAT =time, RECOVERY...

O ponto de recuperação é a mais recente confirmação de transação ocorrida até o valor datetime especificado pela hora.The recovery point is the latest transaction commit that occurred at or before the datetime value that is specified by time.

Para restaurar apenas as modificações feitas antes de um momento determinado, especifique WITH STOPAT = hora para cada backup restaurado.To restore only the modifications that were made before a specific point in time, specify WITH STOPAT = time for each backup you restore. Isso garante que você não ultrapassará o tempo de destino.This makes sure that you do not go past the target time.

Para restaurar um banco de dados para um momento determinadoTo restore a database to a point in time

Observação

Para obter um exemplo desse procedimento, veja Exemplo (Transact-SQL), mais adiante nesta seção.For an example of this procedure, see Example (Transact-SQL), later in this section.

  1. Conecte-se à instância de servidor na qual você deseja restaurar o banco de dados.Connect to server instance on which you want to restore the database.

  2. Execute a instrução RESTORE DATABASE usando a opção NORECOVERY.Execute the RESTORE DATABASE statement using the NORECOVERY option.

    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.If a partial restore sequence excludes any FILESTREAM filegroup, point-in-time restore is not supported. Você pode forçar a sequência de restauração a continuar.You can force the restore sequence to continue. Contudo, os grupos de arquivos FILESTREAM omitidos de sua instrução RESTORE nunca poderão ser restaurados.However the FILESTREAM filegroups that are omitted from your RESTORE statement can never be restored. 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.To force a point-in-time restore, specify the CONTINUE_AFTER_ERROR option together with the STOPAT, STOPATMARK, or STOPBEFOREMARK option, which you must also specify in your subsequent RESTORE LOG statements. 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.If you specify CONTINUE_AFTER_ERROR, the partial restore sequence succeeds and the FILESTREAM filegroup becomes unrecoverable.

  3. Restaurar o último backup de banco de dados diferencial e, se houver, sem recuperar o banco de dados (RESTORE DATABASE database_name FROM backup_device WITH NORECOVERY).Restore the last differential database backup, if any, without recovering the database (RESTORE DATABASE database_name FROM backup_device WITH NORECOVERY).

  4. Aplique cada backup de log de transações na mesma sequência em que eles foram criados, especificando a hora que você pretende parar o log de restauração (RESTORE DATABASE database_name FROM <backup_device> WITH STOPAT = hora , RECOVERY).Apply each transaction log backup in the same sequence in which they were created, specifying the time at which you intend to stop restoring log (RESTORE DATABASE database_name FROM <backup_device> WITH STOPAT**=time,** RECOVERY).

    Observação

    As opções RECOVERY e STOPAT.The RECOVERY and STOPAT options. 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.If the transaction log backup does not contain the requested time (for example, if the time specified is beyond the end of the time covered by the transaction log), a warning is generated and the database remains unrecovered.

Exemplo (Transact-SQL)Example (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.The following example restores a database to its state as of 12:00 AM on April 15, 2020 and shows a restore operation that involves multiple log backups. 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).On the backup device, AdventureWorksBackups, the full database backup to be restored is the third backup set on the device (FILE = 3), the first log backup is the fourth backup set (FILE = 4), and the second log backup is the fifth backup set (FILE = 5).

Importante

O banco de dados AdventureWorks2012AdventureWorks2012 usa o modelo de recuperação simples.The AdventureWorks2012AdventureWorks2012 database uses the simple recovery model. 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.To permit log backups, before taking a full database backup, the database was set to use the full recovery model, using 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  
  

Tarefas relacionadasRelated Tasks

Consulte TambémSee Also

conjunto de backup (Transact-SQL) backupset (Transact-SQL)
RESTORE (Transact-SQL) RESTORE (Transact-SQL)
RESTORE HEADERONLY (Transact-SQL)RESTORE HEADERONLY (Transact-SQL)