Este tópico descreve como restaurar um banco de dados para um ponto no tempo no SQL Server usando o SQL Server Management Studio ou o Transact-SQL. Este tópico é relevante apenas para bases de dados do SQL Server que utilizam os modelos 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, não é possível realizar a recuperação point-in-time para qualquer ponto dentro desse backup. A base de dados deve ser recuperada até ao final do backup do log de transações.
Use o modo de espera para encontrar um ponto no tempo desconhecido.
Especificar o ponto no tempo no início de 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 deve ter permissões CREATE DATABASE para poder executar RESTORE. Se o banco de dados existir, as permissões RESTORE padrão são atribuídas aos membros das funções fixas de servidor sysadmin e dbcreator, e ao 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 dadas a funções nas quais as informações de associação estão sempre prontamente disponíveis para o servidor. Como a associação à função de banco de dados fixa pode ser verificada somente quando o banco de dados está acessível e sem danos, 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.
Usando o SQL Server Management Studio
Para restaurar um banco de dados até um ponto no tempo
No Pesquisador de Objetos, conecte-se à instância apropriada do Mecanismo de Banco de Dados do SQL Server e expanda a árvore do servidor.
Expanda Bancos de dados. Dependendo do banco de dados, selecione um banco de dados de usuário ou expanda Bancos de Dados do Sistemae, em seguida, selecione um banco de dados do sistema.
Clique com o botão direito do rato na base de dados, seleccione Tarefas, escolha Restaurare, depois, clique em Base de Dados.
Na página Geral, use a seção Origem para especificar a fonte e o local dos conjuntos de backup a serem restaurados. Selecione uma das seguintes opções:
Base de Dados
Selecione o banco de dados a ser restaurado na lista pendente. A lista contém apenas bancos de dados cujo backup foi feito de acordo com o msdb histórico de backup.
Nota
Se o backup for feito de um servidor diferente, o servidor de destino não terá as informações do histórico de backup do banco de dados especificado. Nesse caso, selecione Dispositivo para especificar manualmente o arquivo ou dispositivo a ser restaurado.
Dispositivo
Clique no botão Procurar (...) para abrir a caixa de diálogo Selecionar dispositivos de backup . Na caixa Tipo de mídia de cópia de segurança, selecione um dos tipos de dispositivo listados. Para selecionar um ou mais dispositivos para a caixa de mídia do Backup, clique em Adicionar.
Depois de adicionar os dispositivos desejados à caixa de listagem de mídia do Backup, clique em OK para retornar à página Geral do.
Na caixa de listagem Source: Device: Database, selecione o nome do banco de dados que deve ser restaurado.
Nota Esta lista só está disponível quando o Dispositivo estiver selecionado. Somente bancos de dados que tenham backups no dispositivo selecionado estarão disponíveis.
Na secçã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.
Clique em Linha do tempo para aceder à caixa de diálogo Linha do tempo de Backup.
Na seção Restaurar para, clique em Data e hora específicas.
Use as caixas Data e Hora ou a barra deslizante para especificar uma data e hora exatas onde a restauração deve ser interrompida. Selecione OK.
Nota
Use a caixa Intervalo da Linha do Tempo para alterar a quantidade de tempo exibida na linha do tempo.
Depois de especificar um momento específico no tempo, o Consultor de Recuperação de Bases de Dados garante que apenas os backups necessários para a restauração até esse momento sejam selecionados na coluna Restaurar da grelha de conjuntos de Backup para restaurar. Esses backups selecionados compõem o plano de restauração recomendado para sua restauração point-in-time. Você deve usar apenas os backups selecionados para a sua operação de restauração pontual.
Selecione uma opção para a caixa de estado de recuperação . Esta 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. Logs de transações adicionais não podem ser restaurados. Selecione esta opção se estiver restaurando todos os backups necessários agora.
RESTAURAR COM NORECOVERY que deixa o banco de dados inoperacional e não reverte as transações não confirmadas. Registos de transações adicionais podem ser restaurados. O banco de dados não pode ser usado até que seja recuperado.
RESTAURAR COM STANDBY, QUE DEIXA A BASE DE DADOS NO MODO SOMENTE LEITURA. Ele desfaz transações não confirmadas, mas guarda as ações de desfazer num ficheiro de espera para que os efeitos da recuperação possam ser revertidos.
Faça backup de tail-log antes de restaurar será selecionado se for necessário para o ponto no tempo selecionado. Não é necessário modificar essa configuração, mas você pode optar por fazer backup da parte final do log, mesmo que não seja necessário.
As operações de restauração podem falhar se houver conexões ativas com o banco de dados. Marque a opção Fechar conexões existentes para garantir 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 para o modo de usuário único antes de executar as operações de restauração e define o banco de dados para o modo multiusuário quando concluído.
Selecione "Aviso" antes de restaurar cada backup se desejar ser avisado entre cada operação de restauração. Isso geralmente não é necessário, a menos que o banco de dados seja grande e você deseje monitorar o status da operação de restauração.
Usando Transact-SQL
Antes de começar
Um tempo especificado é sempre restaurado a partir de um backup de log. Em cada instrução RESTORE LOG da sequência de restauração, você deve especificar o tempo de destino ou a transação em uma cláusula STOPAT idêntica. Como pré-requisito para uma restauração point-in-time, você deve primeiro restaurar um backup de banco de dados completo cujo ponto final seja anterior ao tempo de restauração de destino. Esse backup completo de banco de dados pode ser mais antigo do que o backup completo de banco de dados mais recente, desde que você restaure todos os backups de log subsequentes, até e incluindo o backup de log que contém o point-in-time de destino.
Para ajudá-lo a identificar qual backup de banco de dados restaurar, você pode, opcionalmente, especificar sua cláusula WITH STOPAT na instrução RESTORE DATABASE para gerar um erro se um backup de dados for muito recente para o tempo de destino especificado. O backup completo de dados é sempre restaurado, mesmo que contenha o momento desejado.
Sintaxe básica Transact-SQL
RESTAURAR LOG database_name A PARTIR DE <backup_device> COM STOPAT =tempo, RECUPERAÇÃO...
O ponto de recuperação é a confirmação de transação mais recente que ocorreu em ou antes do valor de datetime especificado por hora.
Para restaurar apenas as modificações feitas antes de um point-in-time específico, especifique WITH STOPAT =time para cada backup restaurado. Isso garante que você não ultrapasse o tempo desejado.
Para restaurar um banco de dados para um ponto no tempo
Nota
Para obter um exemplo deste procedimento, consulte Exemplo (Transact-SQL), mais adiante nesta seção.
Conecte-se à instância do servidor na qual você deseja restaurar o banco de dados.
Execute a instrução RESTORE DATABASE usando a opção NORECOVERY.
Nota
Se uma sequência de restauração parcial excluir qualquer grupo de arquivos FILESTREAM, a restauração point-in-time não será suportada. Você pode forçar a sequência de restauração a continuar. No entanto, os grupos de arquivos FILESTREAM que são omitidos da instrução RESTORE nunca podem 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 deve também especificar nas suas instruções RESTORE LOG subsequentes. Se você especificar CONTINUE_AFTER_ERROR, a sequência de restauração parcial será bem-sucedida e o grupo de arquivos FILESTREAM se tornará irrecuperável.
Restaure a última cópia de segurança diferencial do banco de dados, se houver, sem recuperar o banco de dados (RESTORE DATABASE database_name FROM backup_device WITH NORECOVERY).
Aplique cada cópia de segurança do log de transações na mesma sequência em que foram criadas, especificando o momento em que o/a utilizador/a pretende parar de restaurar o log (RESTORE DATABASE database_name FROM <backup_device> WITH STOPAT =time, RECOVERY).
Nota
As opções RECOVERY e STOPAT. Se o backup do log de transações não contiver o tempo solicitado (por exemplo, se o tempo especificado for além do final do tempo coberto pelo log de transações), um aviso será gerado e o banco de dados permanecerá não recuperado.
Exemplo (Transact-SQL)
O exemplo a seguir restaura um banco de dados ao seu estado a partir de 12:00 AM no 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 completo do banco de dados 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 AdventureWorks2022 usa o modelo de recuperação simples. Para permitir backups de log, antes de fazer um backup completo do banco de dados, o banco de dados foi configurado 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
SQL Server-adatbázis-infrastruktúra felügyelete felhőalapú, helyszíni és hibrid relációs adatbázisokhoz a Microsoft PaaS relációs adatbázis-ajánlatokkal.