Compartilhar via


Recuperar páginas (SQL Server)

Este tópico descreve como restaurar páginas no SQL Server usando o SQL Server Management Studio ou o Transact-SQL. A meta de uma restauração de página é restaurar uma ou mais páginas danificadas sem restaurar todo o banco de dados. Normalmente, páginas que são candidatas à restauração foram marcadas como "suspeitas" devido a um erro encontrado ao acessar a página. As páginas suspeitas são identificadas na tabela suspect_pages no banco de dados msdb .

Nesse Tópico

Antes de começar

Quando uma restauração de página é útil?

Uma restauração de página destina-se a reparar páginas danificadas isoladas. Restaurar e recuperar algumas páginas individuais pode ser mais rápido do que uma restauração de arquivo, reduzindo a quantidade de dados offline durante uma operação de restauração. No entanto, se você precisar restaurar mais do que algumas páginas em um arquivo, geralmente será mais eficiente restaurar todo o arquivo. Por exemplo, se muitas páginas em um dispositivo indicarem uma falha pendente do dispositivo, considere restaurar o arquivo, possivelmente para outro local e reparar o dispositivo.

Além disso, nem todos os erros de página exigem uma restauração. Um problema pode ocorrer em dados armazenados em cache, como um índice secundário, que podem ser resolvidos recalculando os dados. Por exemplo, se o administrador do banco de dados descartar um índice secundário e recompilá-lo, os dados corrompidos, embora corrigidos, não serão indicados como tal na tabela suspect_pages .

Limitações e restrições

  • A restauração de página se aplica aos bancos de dados do SQL Server que estão usando os modelos de recuperação completos ou com registro em massa. A restauração de página tem suporte apenas para grupos de arquivos de leitura/gravação.

  • Somente páginas de banco de dados podem ser restauradas. A restauração de página não pode ser usada para restaurar o seguinte:

    • Log de transações

    • Páginas de alocação: páginas GAM (Global Allocation Map), páginas SGAM (Shared Global Allocation Map) e páginas PFS (Page Free Space).

    • Página 0 de todos os arquivos de dados (a página de inicialização de arquivo)

    • Página 1:9 (a página de inicialização do banco de dados)

    • Catálogo de texto completo

  • Para um banco de dados que usa o modelo de recuperação em bloco, a restauração de página tem as seguintes condições adicionais:

    • Fazer backup enquanto os dados do grupo de arquivos ou da página estiverem offline é problemático para dados em massa registrados, pois os dados offline não são registrados no log. Qualquer página offline pode impedir o backup do log. Nesses casos, considere o uso do DBCC REPAIR, pois isso pode causar menos perda de dados do que restaurar para o backup mais recente.

    • Se um backup de log de um banco de dados com registro em massa encontrar uma página inválida, ele falhará, a menos que WITH CONTINUE_AFTER_ERROR seja especificado.

    • A restauração de página geralmente não funciona com a recuperação registrada em massa.

      Uma prática recomendada para executar a restauração de página é definir o banco de dados como o modelo de recuperação completa e tentar um backup de log. Se o backup de log funcionar, você poderá continuar com a restauração da página. Se o backup de log falhar, será necessário perder o trabalho realizado desde o backup de log anterior ou tentar executar o comando DBCC com a opção REPAIR_ALLOW_DATA_LOSS.

Recomendações

  • Cenários de restauração de página:

    Restauração de página offline
    Todas as edições do SQL Server dão suporte à restauração de páginas quando o banco de dados está offline. Em uma restauração de página offline, o banco de dados está offline enquanto as páginas danificadas são restauradas. No final da sequência de restauração, o banco de dados fica online.

    Restauração de página online
    O SQL Server Enterprise Edition dá suporte a restaurações de página online, embora usem a restauração offline se o banco de dados estiver offline no momento. Na maioria dos casos, uma página danificada pode ser restaurada enquanto o banco de dados permanece online, incluindo o grupo de arquivos para o qual uma página está sendo restaurada. Quando o grupo de arquivos primário está online, mesmo que um ou mais de seus grupos de arquivos secundários estejam offline, as restaurações de página geralmente são executadas online. Ocasionalmente, no entanto, uma página danificada pode exigir uma restauração offline. Por exemplo, danos a determinadas páginas críticas podem impedir que o banco de dados seja iniciado.

    Aviso

    Se páginas danificadas estiverem armazenando metadados de banco de dados críticos, as atualizações necessárias para metadados poderão falhar durante uma tentativa de restauração de página online. Nesse caso, você pode executar uma restauração de página offline, mas primeiro você deve criar um backup de log final (fazendo backup do log de transações usando RESTORE WITH NORECOVERY).

  • A restauração de página aproveita o melhor relatório de erros no nível da página (incluindo somas de verificação de página) e o acompanhamento. Páginas detectadas como corrompidas pela soma de verificação ou por uma gravação incompleta, páginas danificadas, podem ser restauradas por meio de uma operação de restauração de página. Somente páginas especificadas explicitamente são restauradas. Cada página especificada é substituída pela cópia dessa página do backup de dados especificado.

    Quando você restaura os backups de log subsequentes, eles são aplicados somente a arquivos de banco de dados que contêm pelo menos uma página que está sendo recuperada. Uma cadeia ininterrupta de backups de log deve ser aplicada à última restauração completa ou diferencial para levar o grupo de arquivos que contém a página para o arquivo de log atual. Como em uma restauração de arquivo, o conjunto de avanço é avançado com uma única passagem de reexecução de log. Para que uma restauração de página seja bem-sucedida, as páginas restauradas devem ser recuperadas para um estado consistente com o banco de dados.

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 RESTORE. Se o banco de dados existir, as permissões RESTORE são atribuídas automaticamente aos membros das funções de servidor fixas sysadmin e dbcreator, assim como ao proprietário (dbo) do banco de dados. Para a opção FROM DATABASE_SNAPSHOT, o banco de dados sempre existirá.

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

Como usar o SQL Server Management Studio.

A partir do SQL Server 2014, o SQL Server Management Studio dá suporte a restaurações de página.

Para restaurar páginas

  1. Conecte-se à instância apropriada do Mecanismo de Banco de Dados do SQL Server, no Pesquisador de Objetos, clique no nome do servidor para expandir a árvore do servidor.

  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 Restaurar e clique em Página, que abre a caixa de diálogo Restaurar Página .

    Restaurar
    Esta seção executa a mesma função que a de Restaurar no Banco de Dados de Restauração (Página Geral).

    Banco de dados
    Especifica o banco de dados a ser restaurado. Você pode adicionar um novo banco de dados ou selecionar um banco de dados já existente na lista suspensa. A lista inclui todos os bancos de dados no servidor, exceto os bancos de dados do sistema master e tempdb.

    Aviso

    Para restaurar um backup protegido por senha, você deve usar a instrução RESTORE .

    Tail-Log backup
    Insira ou selecione um nome de arquivo no dispositivo de backup em que o backup do log final será armazenado para o banco de dados.

    Conjuntos de backup
    Esta seção exibe os conjuntos de backup envolvidos na restauração.

    Cabeçalho Valores
    Nome O nome do conjunto de backup.
    Componente O componente de backup: banco de dados, arquivo ou <em branco> (para logs de transações).
    Tipo O tipo de backup executado: Total, Diferencial ou Log de Transações.
    Servidor O nome da instância do Mecanismo de Banco de Dados que executou a operação de backup.
    Banco de dados O nome do banco de dados envolvido na operação de backup.
    de Posição A posição do conjunto de backup no volume.
    Primeiro LSN O LSN (número de sequência de log) da primeira transação no conjunto de backup. Em branco para backups de arquivo.
    Último LSN O LSN (número de sequência de log) da última transação no conjunto de backup. Deixe em branco para backups de arquivo.
    LSN de ponto de verificação O LSN (número de sequência de log) do ponto de verificação mais recente no momento em que o backup foi criado.
    LSN completo O LSN (número de sequência de log) do backup de banco de dados completo mais recente.
    Data de Início A data e a hora em que a operação de backup começou, apresentada na configuração regional do cliente.
    Data de conclusão A data e a hora em que a operação de backup foi concluída, apresentada na configuração regional do cliente.
    Tamanho O tamanho do conjunto de backup em bytes.
    Nome de usuário O nome do usuário que executou a operação de backup.
    Término A data e a hora em que o conjunto de backup expira.

    Clique em Verificar para verificar a integridade dos arquivos de backup necessários para executar a operação de restauração de página.

  4. Para identificar páginas corrompidas, com o banco de dados correto selecionado na caixa Banco de Dados, clique em Verificar Páginas do Banco de Dados. Esta é uma operação de execução longa.

    Aviso

    Para restaurar páginas específicas que não estão corrompidas, clique em Adicionar e insira a ID do Arquivo e a ID da Página das páginas a serem restauradas.

  5. A grade de páginas é usada para identificar as páginas a serem restauradas. Inicialmente, essa grade é preenchida a partir da tabela do sistema suspect_pages. Para adicionar ou remover páginas da grade, clique em Adicionar ou Remover. Para obter mais informações, consulte Gerenciar a tabela de suspect_pages (SQL Server).

  6. A tabela de conjuntos de backup lista os conjuntos de backup no plano de restauração padrão. Opcionalmente, clique em Verificar para verificar se os backups são legíveis e se os conjuntos de backup estão concluídos, sem restaurá-los. Para obter mais informações, consulte RESTORE VERIFYONLY (Transact-SQL).

    Páginas

  7. Para restaurar as páginas listadas na grade de páginas, clique em OK.

Usando Transact-SQL

Para especificar uma página em uma instrução RESTORE DATABASE, você precisa da ID do arquivo que contém a página e a ID da página. A sintaxe necessária é a seguinte:

RESTORE DATABASE <database_name>

PAGE = '<file: page> [ ,... n ] ' [ ,... n ]

FROM <backup_device> [ ,... n ]

WITH NORECOVERY

Para obter mais informações sobre os parâmetros da opção PAGE, consulte RESTORE Arguments (Transact-SQL). Para obter mais informações sobre a sintaxe RESTORE DATABASE, consulte RESTORE (Transact-SQL).

Para restaurar páginas

  1. Obtenha as IDs de página das páginas danificadas a serem restauradas. Uma soma de verificação ou erro de escrita interrompida retorna a ID da página, fornecendo as informações necessárias para especificar as páginas. Para pesquisar a ID da página de uma página danificada, use qualquer uma das fontes a seguir.

    Origem da ID da página Tópico
    msdb..suspect_pages Gerenciar a tabela suspect_pages (SQL Server)
    Log de erros Exibir o Log de Erros do SQL Server (SQL Server Management Studio)
    Rastreamentos de eventos Monitorar e responder a eventos
    DBCC DBCC (Transact-SQL)
    Provedor WMI Provedor WMI para conceitos de eventos de servidor
  2. Inicie uma restauração de página com um banco de dados completo, arquivo ou backup de grupo de arquivos que contém a página. Na instrução RESTORE DATABASE, use a cláusula PAGE para listar as IDs de página de todas as páginas a serem restauradas.

  3. Aplique os diferenciais mais recentes.

  4. Aplique os backups de log subsequentes.

  5. Crie um novo backup de log do banco de dados que inclua o LSN final das páginas restauradas, ou seja, o ponto em que a última página restaurada é retirada offline. O LSN final, que é definido como parte da primeira restauração na sequência, é o LSN alvo para alterações. O roll forward online do arquivo que contém a página pode parar no LSN de destino de refazer. Para saber o LSN de destino de refazer atual de um arquivo, consulte a coluna redo_target_lsn de sys.master_files. Para obter mais informações, consulte sys.master_files (Transact-SQL).

  6. Restaure o novo backup de log. Depois que esse novo backup de log é aplicado, a restauração da página é concluída e as páginas agora são utilizáveis.

    Observação

    Essa sequência é análoga a uma sequência de restauração de arquivo. Na verdade, restaurações de página e restaurações de arquivo podem ser executadas como parte da mesma sequência.

Exemplo (Transact-SQL)

O exemplo a seguir restaura quatro páginas danificadas do arquivo B com NORECOVERY. Em seguida, dois backups de log são aplicados com NORECOVERY, seguidos com o backup de log final, que é restaurado com RECOVERY. Este exemplo executa uma restauração online. No exemplo, a ID do arquivo B é 1, e as IDs de página das páginas danificadas são 57, 202, 916 e 1016.

RESTORE DATABASE <database> PAGE='1:57, 1:202, 1:916, 1:1016'  
   FROM <file_backup_of_file_B>   
   WITH NORECOVERY;  
RESTORE LOG <database> FROM <log_backup>   
   WITH NORECOVERY;  
RESTORE LOG <database> FROM <log_backup>   
   WITH NORECOVERY;   
BACKUP LOG <database> TO <new_log_backup>;   
RESTORE LOG <database> FROM <new_log_backup> WITH RECOVERY;  
GO  

Consulte Também

RESTORE (Transact-SQL)
Aplicar backups de log de transações (SQL Server)
Gerenciar a tabela suspect_pages (SQL Server)
Fazer backup e restaurar bancos de dados do SQL Server