Executando restaurações de arquivo (modelo de recuperação completa)

Este tópico é relevante apenas para bancos de dados que contêm vários arquivos ou grupos de arquivos sob o modelo de recuperação completa ou de carregamento em massa.

Em uma restauração de arquivo, a meta é restaurar um ou mais arquivos danificados sem restaurar todo o banco de dados. Todas as edições do SQL Server dão suporte à restauração de arquivos quando o banco de dados estiver offline (restauração de página offline). O SQL Server 2005 Standard, o SQL Server 2005 Express Edition e o SQL Server 2005 Workgroup e versões posteriores só dão suporte para restauração offline, e a restauração de um arquivo para o grupo de arquivos primário sempre requer que o banco de dados esteja offline. O SQL Server 2005 Enterprise Edition e versões posteriores usarão a restauração offline se o banco de dados já estiver offline.

No SQL Server 2005 Enterprise Edition e versões posteriores, se o banco de dados estiver online durante a restauração de um arquivo, o banco de dados permanecerá online. A restauração e recuperação de um arquivo enquanto o banco de dados está online é denominada uma restauração de arquivo online.

Esses cenários de restauração de arquivo são os seguintes:

  • Restauração de arquivo offline

    Em uma restauração de arquivo offline, o banco de dados fica offline enquanto os arquivos ou grupos de arquivos danificados são restaurados. Ao término da seqüência de restauração, o banco de dados fica online.

  • Restauração de arquivo online

    No SQL Server 2005 Enterprise Edition e versões posteriores, as restaurações de arquivo são executadas automaticamente online quando o banco de dados está online. Porém, qualquer grupo de arquivos no qual um arquivo esteja sendo restaurado fica offline. Depois que todos os arquivos de um grupo de arquivos offline são recuperados, o grupo de arquivos é automaticamente colocado online. Para obter mais informações sobre restaurações online, consulte Executando restaurações online.

    ObservaçãoObservação

    Somente os grupos de arquivos online podem ser consultados ou atualizados. Uma tentativa de acessar um grupo de arquivos que está offline, inclusive um grupo de arquivos que contém um arquivo que está sendo restaurado ou recuperado, causa um erro.

Se o grupo de arquivos que é restaurado for de leitura/gravação, uma cadeia ininterrupta de backups de log deve ser aplicada após o último backup de dados ou diferencial ser restaurado. Isso faz com que o grupo de arquivos avance para os registros de log nos registros de log ativos atuais no arquivo de log. O ponto de recuperação está normalmente próximo o término do log, mas não necessariamente.

Se o grupo de arquivos que está sendo restaurado for somente leitura, normalmente aplicar backups de log será desnecessário e ignorado. Se o backup for realizado depois que o arquivo se torne somente leitura, ele será o último backup a restaurar. Roll-forward pára no ponto de destino.

Restaurando arquivos ou grupos de arquivos.

Para restaurar um arquivo danificado ou arquivos de backups de arquivos e backups de arquivos diferenciais

  1. Para criar um backup do final do log de transações ativas

    Se você não puder fazer esta operação porque o log foi danificado, você deve restaurar todo o banco de dados. Para obter informações sobre como fazer backup de um log de transações, consulte Criando backups de log de transações.

    Observação importanteImportante

    Para uma restauração de arquivo offline, você deve sempre fazer um backup do final do log antes da restauração do arquivo. Para uma restauração de arquivo online, você deve sempre fazer o backup do log após a restauração do arquivo. Este backup de log é necessário para permitir que o arquivo seja recuperado a um estado consistente com o restante do banco de dados.

  2. Restaure cada arquivo danificado do backup de arquivos mais recente desse arquivo.

  3. Restaure o backup de arquivo diferencial mais recente, se houver, para cada arquivo restaurado.

  4. Restaure backups de log de transações em seqüência, iniciando com o backup que inclui o mais antigo dos arquivos restaurados e terminando com o backup do final do log criado na etapa 1.

    Você deve restaurar os backups de log de transações que foram criados após os backups de arquivo para trazer o banco de dados a um estado consistente. Os backups de log de transações podem ser rolados para frente rapidamente, porque somente são aplicadas as mudanças que se aplicam aos arquivos restaurados. Restaurar arquivos individuais pode ser melhor que restaurar todo o banco de dados, porque não são copiados arquivos não danificados e rolados para frente. Porém, a cadeia inteira de backups de log ainda tem que ser lida.

  5. Recuperar o banco de dados.

ObservaçãoObservação

Podem ser usados backups de arquivo para restaurar o banco de dados a um ponto anterior no tempo. Para fazê-lo, você deve restaurar um conjunto completo de backups de arquivo e então restaurar backups de log de transações em seqüência para alcançar um ponto de destino que busca o término do backup de arquivo restaurado mais recente. Para obter mais informações sobre recuperação no momento inadequado, consulte Restaurando um banco de dados para um ponto em um backup.

Para restaurar arquivos e grupos de arquivos

Tópicos Avançados

Seqüência de restauração Transact-SQL para restauração de arquivo offline (Modelo de Recuperação Completo)

Um cenário de restauração de arquivo consiste em uma única seqüência de restauração que copia, rola para frente e recupera os dados apropriados.

O código a seguir Transact-SQL mostra as opções críticas RESTORE em uma seqüência de restauração para o cenário de restauração de arquivo. Sintaxes e detalhes não relevantes a este propósito são omitidos.

O exemplo mostra uma restauração offline restaurar dois arquivos secundários, A e B, com NORECOVERY. Em seguida, dois backups de log são aplicados com NORECOVERY, seguido pelo backup do final do log que é restaurado com RECOVERY. O exemplo inicia levando o arquivo offline para uma restauração de arquivo offline.

--Take the file offline.
ALTER DATABASE database_name MODIFY FILE SET OFFLINE
-- Back up the currently active transaction log.
BACKUP LOG database_name
   TO <tail_log_backup>
   WITH NORECOVERY
GO 
-- Restore the files.
RESTORE DATABASE database_name FILE=<name> 
   FROM <file_backup_of_file_A> 
   WITH NORECOVERY
RESTORE DATABASE database_name FILE=<name> ......
   FROM <file_backup_of_file_B> 
   WITH NORECOVERY
-- Restore the log backups.
RESTORE LOG database_name FROM <log_backup> 
   WITH NORECOVERY
RESTORE LOG database_name FROM <log_backup> 
   WITH NORECOVERY
RESTORE LOG database_name FROM <tail_log_backup> 
   WITH RECOVERY