Reverter um banco de dados a um instantâneo do banco de dados

Se os dados em um banco de dados online forem danificados, em alguns casos, reverter o banco de dados para um instantâneo do banco de dados que preceda o dano pode ser uma alternativa apropriada para restaurar o banco de dados de um backup. Por exemplo, reverter um banco de dados pode ser útil para reverter um erro sério recente de usuário, como uma tabela descartada. Porém, todas as mudanças feitas depois que o instantâneo foi criado serão perdidas.

  • **Antes de começar: **

    Limitações e restrições

    Pré-requisitos

    Segurança

  • Para reverter o banco de dados para um instantâneo do banco de dados, use: Transact-SQL

Antes de começar

Limitações e restrições

Não há suporte para a reversão nas seguintes condições:

  • O banco de dados deve ter somente um instantâneo do banco de dados no momento, para o qual você planeja reverter.

  • Grupos de arquivos somente leitura ou compactados existem no banco de dados.

  • Há algum arquivo offline agora, mas que estava online quando o instantâneo foi criado.

Antes de reverter um banco de dados, considere as seguintes limitações:

  • Reverter não é destinado à recuperação de mídia. . Um instantâneo do banco de dados é uma cópia incompleta dos arquivos de banco de dados. Assim, se o banco de dados ou o instantâneo do banco de dados estiver corrompido, reverter de um instantâneo será praticamente impossível. Além disso, mesmo quando isso é possível, é improvável que a reversão corrija o problema no caso de corrupção. Portanto, é essencial fazer backups e testar regularmente seu plano de restauração para proteger um banco de dados. Para obter mais informações, consulte Fazer backup e restaurar bancos de dados do SQL Server.

    ObservaçãoObservação

    Se você precisa ser capaz de restaurar o banco de dados de origem para o momento determinado em que o instantâneo do banco de dados foi criado, use um modelo de recuperação completo e implemente uma política de backup que permita fazer isso.

  • O banco de dados de origem original é substituído pelo banco de dados revertido. Assim, as atualizações feitas no banco de dados desde a criação do instantâneo são perdidas.

  • A operação de reversão também substitui o arquivo de log antigo e recria o log. Consequentemente, você não pode fazer roll forward do banco de dados revertido para o ponto do erro do usuário. Portanto, recomendamos que você faça backup do log antes de reverter um banco de dados.

    ObservaçãoObservação

    Embora você não possa restaurar o registro original para roll-forward do banco de dados, a informações no arquivo de log original pode ser útil para reconstruir os dados perdidos.

  • A reversão quebra a cadeia de backup de log. Então, antes de fazer o backup de log do banco de dados revertido, você deve primeiro fazer um backup do banco de dados completo ou um backup de arquivo. Recomendamos um backup de banco de dados completo.

  • Durante uma operação de reversão, o instantâneo e o banco de dados de origem ficam indisponíveis. O instantâneo e o banco de dados de origem são ambos marcados como “Em restauração”. Se ocorrer um erro durante a operação de reversão, quando o banco de dados for novamente inicializado, a operação de reversão tentará terminar a reversão.

  • Os metadados de um banco de dados revertido são iguais aos metadados na hora do instantâneo.

  • A reversão cancela todos os catálogos de texto completo.

[Início]

Pré-requisitos

Verifique se o banco de dados de origem e o instantâneo do banco de dados atendem aos seguintes pré-requisitos:

[Início]

Segurança

Permissões

Qualquer usuário que tenha permissões RESTORE DATABASE no banco de dados de origem pode revertê-lo ao estado em que estava quando o instantâneo de banco de dados foi criado.

[Início]

Como reverter o banco de dados para um instantâneo do banco de dados (usando Transact-SQL)

Para reverter um banco de dados a um instantâneo do banco de dados

ObservaçãoObservação

Para obter um exemplo deste procedimento, consulte Exemplos (Transact-SQL), posteriormente nesta seção.

  1. Identifique o instantâneo do banco de dados para o qual você quer reverter o banco de dados. Você pode exibir os instantâneos em um banco de dados no SQL Server Management Studio (consulte Exibir um instantâneo de banco de dados (SQL Server)). Também, você pode identificar o banco de dados de origem a partir de uma exibição da coluna source_database_id da exibição do catálogosys.databases (Transact-SQL).

  2. Cancele qualquer outro instantâneo do banco de dados.

    Para obter informações em como cancelar instantâneos, consulte Descartar um instantâneo do banco de dados (Transact-SQL). Se o banco de dados usar o modelo de recuperação completa, antes de fazer a reversão, você deve fazer o backup do log. Para obter mais informações, consulte Fazer backup de um log de transações (SQL Server) ou Fazer backup do log de transações quando o banco de dados está danificado (SQL Server).

  3. Execute a operação de reversão.

    Uma operação de reversão requer permissões RESTORE DATABASE no banco de dados de origem. Para reverter o banco de dados, use a seguinte instrução Transact-SQL:

    RESTORE DATABASE database_name FROM DATABASE_SNAPSHOT = database_snapshot_name

    Onde database_name é o banco de dados de origem e database_snapshot_name é o nome do instantâneo para o qual você quer reverter o banco de dados. Observe que nessa instrução, você deve especificar um nome de instantâneo em vez de um dispositivo de backup.

    Para obter mais informações, consulte RESTORE (Transact-SQL).

    ObservaçãoObservação

    Durante a operação de reversão, o instantâneo e o banco de dados de origem estão indisponíveis. O instantâneo e o banco de dados de origem ficam ambos marcados como “Em restauração”. Se ocorrer um erro durante a operação de reversão, ela tentará terminar a reversão quando o banco de dados for novamente inicializado.

  4. Se o proprietário do banco de dados mudou desde a criação do instantâneo do banco de dados, convém atualizar o proprietário do banco de dados do banco de dados revertido.

    ObservaçãoObservação

    O banco de dados revertido retém as permissões e configuração (como proprietário de banco de dados e modelo de recuperação) do instantâneo do banco de dados.

  5. Inicie o banco de dados.

  6. Opcionalmente, faça backup do banco de dados revertido, especialmente se usar o modelo de recuperação completa (ou registrada em massa). Para fazer backup de um banco de dados, consulte Criar um backup completo de banco de dados (SQL Server).

[Início]

Exemplos (Transact-SQL)

Esta seção contém os seguintes exemplos de reversão de um banco de dados para um instantâneo do banco de dados:

  • A. Revertendo um instantâneo no banco de dados AdventureWorks

  • B. Revertendo um instantâneo no banco de dados Sales

A.Revertendo um instantâneo no banco de dados AdventureWorks

Este exemplo presume que existe apenas um instantâneo atualmente no banco de dados AdventureWorks2012 . Para obter o exemplo que cria o instantâneo para o qual o banco de dados é revertido, consulte Criar um instantâneo do banco de dados (Transact-SQL).

USE master;
-- Reverting AdventureWorks to AdventureWorks_dbss1800
RESTORE DATABASE AdventureWorks from 
DATABASE_SNAPSHOT = 'AdventureWorks_dbss1800';
GO

B.Revertendo um instantâneo no banco de dados Sales

Este exemplo presume que existem dois instantâneos atualmente no banco de dados Sales : sales_snapshot0600 e sales_snapshot1200. O exemplo exclui o mais antigo dos instantâneos e reverte o banco de dados para o instantâneo mais recente.

Para obter o código para criar o banco de dados de exemplo e instantâneos dos quais esse exemplo depende, consulte:

--Test to see if sales_snapshot0600 exists and if it 
-- does, delete it.
IF EXISTS (SELECT dbid FROM sys.databases
    WHERE NAME='sales_snapshot0600')
    DROP DATABASE SalesSnapshot0600;
GO
-- Reverting Sales to sales_snapshot1200
USE master;
RESTORE DATABASE Sales FROM DATABASE_SNAPSHOT = 'sales_snapshot1200';
GO

Ícone de seta usado com o link Voltar ao Início[Início]

Tarefas relacionadas

Ícone de seta usado com o link Voltar ao Início[Início]

Consulte também

Referência

RESTORE (Transact-SQL)

sys.databases (Transact-SQL)

Conceitos

Instantâneos de banco de dados (SQL Server)

Espelhamento de banco de dados e instantâneos de banco de dados (SQL Server)